CodeIgniter, руководство пользователя к версии 1.6.1


Утилиты для работы с базами данных

Утилиты для работы с базами данных включают в себя функции, помогающие управлять БД(базой данных).

Содержание

Инициализация класса

Важно: Перед запуском данного класса должен быть запущен драйвер для работы с БД!

Загрузка класса следующей функцией :

$this->load->dbutil()

После инициализации объект можно использовать как $this->dbutil:

$this->dbutil->some_function()

$this->dbutil->list_databases()

Возвращает имена баз данных :

$dbs = $this->dbutil->list_databases();

foreach($dbs as $db)
{
    echo $db;
}

$this->dbutil->optimize_table('table_name');

Важно:  Эта функция доступна только на MySQL/MySQLi базах.

Позволяет оптимизировать таблицу, имя которой указано в параметре. Возвращает TRUE/FALSE при успешном/неуспешном выполнении:

if ($this->dbutil->optimize_table('table_name'))
{
    echo 'Success!';
}

$this->dbutil->repair_table('table_name');

Важно:  Эта функция доступна только на MySQL/MySQLi базах.

Исправляет таблицу, имя которой указано в параметре. Возвращает TRUE/FALSE при успешном/неуспешном выполнении:

if ($this->dbutil->repair_table('table_name'))
{
    echo 'Success!';
}

$this->dbutil->optimize_database();

Важно:  Эта функция доступна только на MySQL/MySQLi базах.

Позволяет оптимизировать базу данных, к которой сейчас подключен класс . Возвращает массив статуса БД или FALSE при ошибке.

$result = $this->dbutil->optimize_database();

if ($result !== FALSE)
{
    print_r($result);
}

$this->dbutil->csv_from_result($db_result)

Позволяет создавать CSV файл из результата запроса. Первый параметр содержит текст запроса:

$this->load->dbutil();

$query = $this->db->query("SELECT * FROM mytable");

echo $this->dbutil->csv_from_result($query);

Второй и третий параметры позволяют установить разделитель и символ перехода на новую строку. По умолчанию разделитель - "\t"(знак табуляции), переход на новую строку - "\n". Например:

$delimiter = ";";
$newline = "\r\n";

echo $this->dbutil->csv_from_result($query, $delimiter, $newline);

Важно:  Эта функция НЕ ЗАПИСЫВАЕТ данные в файл. Она просто создает структуру CSV . Если необходимо сохранить в файл, воспользуйтесь хелпером File.

$this->dbutil->xml_from_result($db_result)

Позволяет создавать XML файл из результата запроса. Параметры: запрос и конфигурационный массив. Например:

$this->load->dbutil();

$query = $this->db->query("SELECT * FROM mytable");

$config = array (
                  'root'    => 'root',
                  'element' => 'element',
                  'newline' => "\n",
                  'tab'    => "\t"
                );

echo $this->dbutil->xml_from_result($query, $config);

Важно:  Эта функция НЕ ЗАПИСЫВАЕТ данные в файл. Она просто создает структуру XML . Если необходимо сохранить в файл, воспользуйтесь хелпером File.

$this->dbutil->backup()

Создает бэкап (резервную копию) всех бд или определенных таблиц. Бэкап может быть сжат в Zip или Gzip формат.

Важно:  Эта функция доступна только для MySQL баз.

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

Использование на примере

// Загружаем класс DB utility
$this->load->dbutil();

// Создаем бэкап текущей бд и ассоциируем его с переменной
$backup =& $this->dbutil->backup();

// Загружаем хелпер file и записываем бэкап в файл
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

// Загружаем хелпер download и отправляем бэкап пользователю
$this->load->helper('download');
force_download('mybackup.gz', $backup);

Установка настроек бэкапа

Настройки бэкапа задаются массивом - первым параметром функции :

$prefs = array(
                'tables'      => array('table1', 'table2'),  // Массив таблиц для бэкапа.
                'ignore'      => array(),           // Массив таблиц, не нужных в бэкапе
                'format'      => 'txt',             // gzip, zip, txt
                'filename'    => 'mybackup.sql',    // Имя файла - ТОЛЬКО ДЛЯ ZIP ФАЙЛОВ
                'add_drop'    => TRUE,              // позволяем дописать параметр DROP TABLE в бэкап
                'add_insert'  => TRUE,              // позволяем дописать параметр INSERT в бэкап
                'newline'     => "\n"               // Символ новой строки
              );

$this->dbutil->backup($prefs);

Описание настроек бэкапа

Индекс Значение по умолчанию Опции Описание
tables пустой массив Нет Массив таблиц для бэкапа. Если пусто - все таблицы
ignore пустой массив Нет Массив таблиц, исключенных для бэкапа
formatgzipgzip, zip, txt Формат экспортируемого файла
filename текущее дата/время Нет Имя файла. Нужно только при использовании ZIP-сжатия
add_dropTRUETRUE/FALSE Включение параметра DROP TABLE в экспортируемый SQL файл.
add_insertTRUETRUE/FALSE Включение параметра INSERT в экспортируемый SQL файл.
newline"\n""\n", "\r", "\r\n" Тип символа новой строки в SQL файле.