Класс утилит базы данных  

Служебный класс базы данных содержит методы, которые помогут вам управлять вашей базе.

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

Важно

Для того, чтобы инициализировать класс-утилиту, драйвер базы данных уже должен быть запущен, так как класс использует его.

Загрузить класс можно следующим образом:

$this->load->dbutil();

Вы также можете передать другому объекту базы данных утилиты загрузчика БД, в случае использования базы данных, которая не установлена по умолчанию:

$this->myutil = $this->load->dbutil($this->other_db, TRUE);

В приведенном выше примере мы передаем объект в пользовательскую базу данных в качестве первого параметра и затем говорим вернуть объект dbutil, вместо того, чтобы назначить его непосредственно $this->dbutil.

Примечание

Оба параметра могут использоваться по отдельности, просто передайте пустое значение первым параметром, если вы хотите пропустить его.

После инициализации вы будете обращаться к методам с использованием $this->dbutil объекта:

$this->dbutil->some_method();

Использование утилит базы данных  

Получить список имен баз данных  

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

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

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

Определить, существует ли база данных  

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

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

Примечание

Заменить database_name на имя базы данных, которую вы ищете. Этот метод является чувствительным к регистру.

Оптимизировать таблицу  

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

if ($this->dbutil->optimize_table('table_name'))
{
        echo 'Успех!';
}

Примечание

Не все платформы поддерживают оптимизацию таблицы. Это, в основном, для использования с MySQL.

Ремонт таблицы  

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

if ($this->dbutil->repair_table('table_name'))
{
        echo 'Успех!';
}

Примечание

Не все платформы поддерживают восстановление таблиц.

Оптимизации базы данных  

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

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

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

Примечание

Не все платформы поддерживают оптимизацию базы данных. В основном для использования с MySQL.

Экспорт результатов запроса в файл CSV  

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

$this->load->dbutil();

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

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

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

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

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

Важно

Этот метод НЕ будет писать в файл CSV. Он просто создает макет CSV. Если вам нужно написать использовать файл the Файловый помощник.

Экспорт результатов запроса в виде XML-документа  

Позволяет создать 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. Если вам нужно написать использовать файл the Файловый помощник.

Резервное Копирование Базы Данных  

Резервное Копирование Базы Данных (примечания)  

Позволяет Вам сделать резервную копию всей базы данных или отдельных таблиц. Резервные данные могут быть сжаты в zip или GZIP.

Примечание

Эта функция доступна только для MySQL и Interbase/Firebird баз данных.

Примечание

Для Interbase/Firebird баз данных, имя файла резервной копии является единственным параметром.

$this->dbutil->backup(‘db_backup_filename’);

Примечание

Из-за ограниченного времени выполнения и ограничения памяти PHP, резервное копирование больших баз данных может оказаться невозможным. Если ваша база данных очень большая, вам может понадобиться для резервного копирования командная строка своего SQL сервера или попросите сделать это вашего сисадмина, если вы не имеете права root.

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

// Загрузить класс утилит
$this->load->dbutil();

// Резервное копирование всей вашей базы и присвоение переменной
$backup = $this->dbutil->backup();

// Загрузить файловый помощник и записать файл на ваш сервер
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

// Загрузить помощник загрузок  и отправить файл на рабочий стол
$this->load->helper('download');
force_download('mybackup.gz', $backup);

Установка Настроек Резервного Копирования  

Параметры резервного копирования задаются путем передачи в массив значений первым параметром 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 Нет массив None Массив таблиц для исключения из копии.
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.
foreign_key_checks TRUE TRUE/FALSE Проверять ли на существование внешних ключей.

Справка класса  

class CI_DB_utility  
backup([$params = array()])  
Параметры:
  • $params (массив) – Ассоциативный массив параметров
Возвращает:

сырая/(g)zipped строка запроса SQL

Вовращаемый тип:

строка

Выполнение резервного копирования базы данных из предпочтений пользователя.

database_exists($database_name)  
Параметры:
  • $database_name (строка) – Имя базы данных
Возвращает:

TRUE если база данных существует и FALSE в противном случае

Вовращаемый тип:

булев

Проверяет наличие базы данных.

list_databases()  
Возвращает:Массив имен баз данных
Вовращаемый тип:массив

Получить список всех имен баз данных.

optimize_database()  
Возвращает:Массив сообщений оптимизации или FALSE при провале
Вовращаемый тип:массив

Оптимизирует базы данных.

optimize_table($table_name)  
Параметры:
  • $table_name (строка) – Имя таблицы для оптимизации
Возвращает:

>Массив сообщений оптимизации или FALSE при провале

Вовращаемый тип:

массив

Оптимизация таблиц базы данных.

repair_table($table_name)  
Параметры:
  • $table_name (строка) – Имя таблицы для восстановления
Возвращает:

Массив сообщений восстановления или FALSE при провале

Вовращаемый тип:

массив

Repairs a database table.

csv_from_result($query[, $delim = ', '[, $newline = "n"[, $enclosure = '"']]])  
Параметры:
  • $query (объект) – Объект результата базы данных
  • $delim (строка) – Поле CSV разделителя
  • $newline (строка) – Символ новой строки
  • $enclosure (строка) – Символ разделителя корпуса
Возвращает:

Сгенерированный CSV файл как строку

Вовращаемый тип:

строка

Переводит результат объекта базы данных в документ формата CSV.

xml_from_result($query[, $params = array()])  
Параметры:
  • $query (объект) – Объект результата базы данных
  • $params (массив) – Ассоциативный массив предпочтений
Возвращает:

Сгенерированный XML документ как строку

Вовращаемый тип:

строка

Переводит результат объекта базы данных в документ формата XML.