Spec-Zone.ru › CodeIgniter 3

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

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

  • Инициализация класса утилиты
  • Использование утилит базы данных
    • Получить список имен баз данных
    • Определить, существует ли база данных
    • Оптимизировать таблицу
    • Восстановить таблицу
    • Оптимизировать базу данных
    • Экспорт результата запроса в файл CSV
    • Экспорт результата запроса в XML-документ
  • Резервное копирование базы данных
    • Примечания к резервному копированию базы данных
    • Пример использования
    • Настройка параметров резервного копирования
    • Описание параметров резервного копирования
  • Справочник по классу

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

Важно

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

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

$this->load->dbutil();

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

$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'))
{
        // some code...
}

Примечание

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

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

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

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

Примечание

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

Восстановить таблицу

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

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

Примечание

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

Оптимизировать базу данных

Позволяет оптимизировать базу данных, к которой в данный момент подключен ваш класс DB. Возвращает массив, содержащий сообщения о статусе базы данных, или 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. Если вам нужно записать файл, используйте Утилиту обработки файлов.

Экспорт результата запроса в 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. Если вам нужно записать файл, используйте Утилиту обработки файлов.

Резервное копирование базы данных

Примечания к резервному копированию базы данных

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

Примечание

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

Примечание

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

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

Примечание

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

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

// Load the DB utility class
$this->load->dbutil();

// Backup your entire database and assign it to a variable
$backup = $this->dbutil->backup();

// Load the file helper and write the file to your server
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);

// Load the download helper and send the file to your desktop
$this->load->helper('download');
force_download('mybackup.gz', $backup);

Настройка параметров резервного копирования

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

Справочник по классу

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

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

Тип возвращаемого значения:

строка

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

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

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

Тип возвращаемого значения:

bool

Проверяет существование базы данных.

list_databases()
Возвращаемое значение: Массив имён найденных баз данных
Тип возвращаемого значения: array

Возвращает список всех имён баз данных.

optimize_database()
Возвращаемое значение: Массив сообщений об оптимизации или FALSE при ошибке
Тип возвращаемого значения: array

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

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

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

Тип возвращаемого значения:

array

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

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

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

Тип возвращаемого значения:

array

Ремонтирует таблицу базы данных.

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

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

Тип возвращаемого значения:

строка

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

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

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

Тип возвращаемого значения:

строка

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

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/database/utilities.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API