Класс утилит БД
Класс утилит БД содержит функции, которые позволяют вам управлять вашей базой данных.
Содержание
- Инициализация класса утилит
- Список ваших БД
- Проверка конкретной БД
- Оптимизация таблиц
- Восстановление БД
- Оптимизация БД
- Файлы CSV из результата выборки
- Файлы XML из результата выборки
- Бэкап БД
Инициализация класса утилит
Важно: Перед тем, как инициализировать класс утилит, ваш драйвер БД должен быть загружен, так как утилиты зависят от него.
Загрузка класса:
$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 | пустой массив | Нет | Массив таблиц, которые следует проигнорировать. | 
| format | gzip | gzip, zip, txt | Формат файла экспорта. | 
| filename | текущая дата и время | Нет | Имя файла бэкапа. Требуется только в том случае, если вы используете компрессию zip. | 
| add_drop | TRUE | TRUE/FALSE | Включать ли условия DROP TABLE в ваш экспортный SQL-файл. | 
| add_insert | TRUE | TRUE/FALSE | Включать ли условия INSERT в ваш экспортный SQL-файл. | 
| newline | "\n" | "\n", "\r", "\r\n" | Тип переноса строки, используемый в экспортном SQL-файле. | 
