php - CodeIgniter - 从主 SQL 文件创建多个数据库

标签 php mysql sql codeigniter

获取包含架构和表创建语句的 .sql 文件并使用它从 CodeIgniter 中创建新数据库的最佳方法是什么?我想要做的是使用这个 .sql 文件作为具有相同架构的多个数据库的蓝图,但可以随时创建。

我想我只需要能够获取该文件,提取内容并将其回显到数据库查询中。有更好的方法吗?

我还需要能够在提交查询之前将自定义数据库名称注入(inject)到语句中。我该怎么办呢?只需一个占位符关键字并用数据库名称进行 preg 替换?

为了确保所有数据库同步维护,我认为也许这个蓝图模式应该作为模块添加到 CodeIgniter 中。这样,如果我需要更改架构,我可以上传带有更新的 .sql 文件的新版本模块,并在所有数据库中执行必要的迁移。听起来合理吗?如果是这样,我该怎么办?

最佳答案

我之前已经这样做过(运行.sql文件),并且我使用了这个;

$sql = read_file('path/to/file.sql');

$final = '';
foreach(explode("\n", $sql) as $line)
{
      if ( isset($line[0]) && $line[0] != '#' )
      {
                $final .= $line . "\n";
      }
}

foreach (explode(";\n", final) as $sql)
{
      if ($sql)
      {
                $this->db->query($sql);
      }
}

关于php - CodeIgniter - 从主 SQL 文件创建多个数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24431813/

相关文章:

php - 我想为响应式 bootstrap 3 模板显示相同的图像大小

php - Android 向 PHP 发送字符串

mysql - 如何计算满足特定条件的行的最大出现次数

mysql - 使用单个查询获取每个多个日期间隔的条目数

php - 为每个隐藏值实现唯一的 id 名称

php - Codeigniter,是否可以有一个可变的公共(public)函数名称?

php - 是否有任何 CakePHP 函数可以构建并执行查询而不返回结果集

Mysql - 如果 table1.id = table2.id > 1,则显示一行

mysql - 对两个 case 表达式的乘法求和

mysql - SQL中没有默认顺序,如果没有指定Order By,是什么决定了返回的顺序行呢?