Утилиты для работы с базами данных
Утилиты для работы с базами данных включают в себя функции, помогающие управлять БД(базой данных).
Содержание
- Инициализация класса
- Список Ваших БД
- Оптимизация таблиц
- Исправление баз данных
- Оптимизация БД
- Конвертирование результата в 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->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 | пустой массив | Нет | Массив таблиц, исключенных для бэкапа |
| 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 файле. |