Фреймворк CodeIgniter Version 2.1.3


Класс утилит БД

Класс утилит БД содержит функции, которые позволяют вам управлять вашей базой данных.

Содержание

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

Важно:  Перед тем, как инициализировать класс утилит, ваш драйвер БД должен быть загружен, так как утилиты зависят от него.

Загрузка класса:

$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->database_exists();

Иногда полезно знать, существует ли конкретная БД. Возвращает TRUE или FALSE. Пример использования:

if ($this->dbutil->database_exists('database_name'))
{
   // какой-то код...
}

Примечание: Замените database_name на имя таблицы, которую вы ищете. Функция чувствительна к регистру.

$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);

Второй параметр позволяет указать символы ограничителя и новой строки. По умолчанию в качестве ограничителя используются табы, и \n в качестве символа новой строки. Пример:

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

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

Важно:  Эта функция НЕ записывает файл CSV. Она просто создает верстку 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. Она просто создает XML-верстку. Если вы хотите записать файл, используйте помощник File.

$this->dbutil->backup()

Позволяет вам сделать бэкап БД или отдельных таблиц. Данные бэкапа могут быть сжаты в форматы Zip или Gzip.

Примечание:  Эта функция доступна только для БД MySQL.

Примечание: из-за ограниченного времени выполнения и лимитов на потребление памяти, резервное копирование очень больших БД может быть невозможно. Если ваша БД очень велика, целесообразно делать копию прямо с сервера SQL через командную строку. Или попросите админстратора сервера сделать это за вас, если у вас нет соответствующих прав.

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

// Загрузка класса утилит БД
$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'),  // Array of tables to backup.
                'ignore'      => array(),           // List of tables to omit from the backup
                'format'      => 'txt',             // gzip, zip, txt
                'filename'    => 'mybackup.sql',    // File name - NEEDED ONLY WITH ZIP FILES
                'add_drop'    => TRUE,              // Whether to add DROP TABLE statements to backup file
                'add_insert'  => TRUE,              // Whether to add INSERT data to backup file
                'newline'     => "\n"               // Newline character used in backup file
              );

$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-файле.
    Поддержать сайт на родительском проекте КГБ