CodeIgniter — создание нескольких баз данных из основного файла SQL

#php #mysql #sql #codeigniter

#php #mysql #sql #codeigniter

Вопрос:

Каков наилучший способ взять SQL-файл, содержащий инструкции по созданию схемы и таблицы, и использовать его для создания новых баз данных из CodeIgniter? Я хочу иметь возможность использовать этот файл .sql в качестве схемы для нескольких баз данных с одинаковой схемой, но которые могут быть созданы в любое время.

Я полагаю, мне просто нужно иметь возможность взять этот файл, извлечь содержимое и передать его в запрос базы данных. Есть ли лучший способ сделать это?

Мне также нужно иметь возможность вводить пользовательское имя базы данных в инструкции перед отправкой запроса. Как бы я это сделал? Просто введите ключевое слово-заполнитель и замените preg именем базы данных?

Просто чтобы убедиться, что все базы данных поддерживаются синхронно, я подумал, что, возможно, эту схему схемы элементов следует добавить в CodeIgniter в качестве модуля. Таким образом, если мне нужно изменить схему, я могу загрузить новую версию модуля с обновленным файлом .sql и выполнить необходимые миграции во всех базах данных. Звучит разумно? Если да, то как мне это сделать?

Ответ №1:

Я уже делал это (запускал файл .sql) раньше, и я использовал это;

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

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

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

Комментарии:

1. Выглядит хорошо, насколько чтение файла идет. Я думаю, если мне нужно ввести имя базы данных, я могу просто сделать str_replace в каждой строке, верно? Как насчет изменений базы данных? Я полагаю, мне нужно было бы просто запустить инструкции, которые изменяют таблицы, а затем загрузить новый файл master .sql для последующих баз данных?

2. Может быть, класс миграции CI может вам помочь? ellislab.com/codeigniter/user-guide/libraries/migration.html

3. Да, миграции будут работать для этого, я полагаю, я просто всегда пытаюсь снизить риск, не поддерживая две вещи (миграции и обновленный файл master .sql). Я стараюсь использовать классы CI как можно чаще, но для создания базы данных класс DB Forge просто казался немного ограниченным (из того, что я мог видеть), и гораздо удобнее просто использовать .sql, экспортированный из Workbench.