Klasa narzędziowa bazy danych
Klasa narzędziowa bazy danych zawiera funkcje, które pomagają zarządzać Twoją bazą danych.
Spis treści
- Ładowanie klasy narzędziowej
- Listowanie baz danych
- Sprawdzanie konkretnej bazy danych
- Optymalizacja tabel
- Naprawa bazy danych
- Optymalizacja bazy danych
- Eksport wyników do pliku CSV
- Eksport wyników do pliku XML
- Tworzenie kopii zapasowej
Ładowanie klasy narzędziowej
Ważne: Podczas ładowania klasy narzędziowej, driver dla bazy danych musi być już załadowany, ponieważ klasa narzędziowa zależy od niego.
Załaduj klasę narzędziową w ten sposób:
$this->load->dbutil()
Po załadowaniu klasy, będziesz miał dostęp do jej funkcji za pomocą obiektu $this->dbutil:
$this->dbutil->jakas_funkcja()
$this->dbutil->list_databases()
Zwraca tablicę z nazwami baz danych:
$dbs = $this->dbutil->list_databases();
foreach ($dbs as $db)
{
echo $db;
}
$this->dbutil->database_exists();
Czasami dobrze jest wiedzieć, czy konkretna baza danych istnieje. Zwraca TRUE/FALSE (boolean). Przykład użycia:
if ($this->dbutil->database_exists('nazwa_bazy_danych'))
{
// jakiś kod...
}
Uwaga: Zamień nazwa_bazy_danych na nazwę bazy danych, której szukasz. Wielkość liter parametru ma znaczenie.
$this->dbutil->optimize_table('nazwa_tabeli');
Uwaga: Ta funkcja jest dostępna tylko dla driverów MySQL/MySQLi.
Pozwala na optymalizację tabeli, przyjmując jej nazwę jako pierwszy parametr. Zwraca TRUE/FALSE zależnie od sukcesu lub porażki:
if ($this->dbutil->optimize_table('nazwa_tabeli'))
{
echo 'Sukces!';
}
Uwaga: Nie wszystkie platformy bazodanowe wspierają optymalizację tabel.
$this->dbutil->repair_table('nazwa_tabeli');
Uwaga: Ta funkcja jest dostępna tylko dla driverów MySQL/MySQLi.
Pozwala na naprawę tabeli, przyjmując jej nazwę jako pierwszy parametr. Zwraca TRUE/FALSE zależnie od sukcesu lub porażki:
if ($this->dbutil->repair_table('nazwa_tabeli'))
{
echo 'Sukces!';
}
Uwaga: Nie wszystkie platformy bazodanowe wspierają naprawę tabel.
$this->dbutil->optimize_database();
Uwaga: Ta funkcja jest dostępna tylko dla driverów MySQL/MySQLi.
Pozwala na optymalizację bazy danych, do której jesteś aktualnie podłaczony. Zwraca tablicę zawierającą wiadomość ze statusem z bazy danych lub wartość FALSE w przypadku niepowodzenia.
$result = $this->dbutil->optimize_database();
if ($result !== FALSE)
{
print_r($result);
}
Uwaga: Nie wszystkie platformy bazodanowe wspierają optymalizację bazy danych.
$this->dbutil->csv_from_result($db_result)
Pozwala na wygenerowanie pliku CSV z wyniku zapytania. Pierwszy parametr funkcji musi zawierać obiekt wyniku zapytania. Przykład:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mojatabela");
echo $this->dbutil->csv_from_result($query);
Drugi i trzeci parametr pozwalają na ustalenie znaku separatora i nowej linii. Domyślnie znak tab jest ustawiony jako separator, a znak "\n" jako nowa linia. Przykład:
$delimiter = ",";
$newline = "\r\n";
echo $this->dbutil->csv_from_result($query, $delimiter, $newline);
Ważne: Ta funkcja NIE zapisze za Ciebie pliku CSV. Tworzy tylko układ CSV. Jeśli chcesz zapisać plik, użyj helpera File.
$this->dbutil->xml_from_result($db_result)
Pozwala na wygenerowanie pliku XML z wyniku zapytania. Pierwszy parametr funkcji musi zawierać obiekt wyniku zapytania. Drugi może zawierać opcjonalną tablicę konfiguracyjną. Przykład:
$this->load->dbutil();
$query = $this->db->query("SELECT * FROM mojatabela");
$config = array (
'root' => 'root',
'element' => 'element',
'newline' => "\n",
'tab' => "\t"
);
echo $this->dbutil->xml_from_result($query, $config);
Ważne: Ta funkcja NIE zapisze za Ciebie pliku XML. Tworzy tylko układ XML. Jeśli chcesz zapisać plik, użyj helpera File.
$this->dbutil->backup()
Pozwala na wykonanie kopii całej bazy danych lub pojedynczej tabeli. Kopia zapasowa może zostać skopresowana do formatu Zip lub Gzip.
Uwaga: Ta funkcja jest dostępna tylko dla baz MySQL.
Uwaga: W związku z limitem czasu wykonywania i dostępnej ilości pamięci dla PHP, wykonywanie kopii bardzo dużej bazy danych może nie być możliwe. Jeśli Twoja baza danych jest bardzo duża, być może będziesz zmuszony wykonać kopię zapasową bezpośrednio z serwera SQL, za pomocą linii komend lub poprosić, aby zrobił to za Ciebie administrator serwera, jeśli nie dysponujesz uprawnieniami roota.
Przykłady użycia
// Ładuje klasę narzędziową
$this->load->dbutil();
// Wykonuje kopię zapasową Twojej całej bazy danych i przypisuje ją do zmiennej
$backup =& $this->dbutil->backup();
// Ładuje helper file i zapisuje plik na Twoim serwerze
$this->load->helper('file');
write_file('/path/to/mybackup.gz', $backup);
// Ładuje helper download i wysyła plik na Twój komputer
$this->load->helper('download');
force_download('mybackup.gz', $backup);
Ustawianie preferencji kopii zapasowej
Preferencje kopii zapasowej są ustalane poprzez wysłanie tablicy wartości do pierwszego parametru funkcji. Przykład:
$prefs = array(
'tables' => array('table1', 'table2'), // Tablica tabel do wykonania kopii zapasowej.
'ignore' => array(), // Lista tabel, które mają zostać pominięte w procesie wykonywania kopii zapasowej
'format' => 'txt', // gzip, zip, txt
'filename' => 'mybackup.sql', // nazwa pliku - POTRZEBNA TYLKO PRZY PLIKACH ZIP
'add_drop' => TRUE, // Czy dodać polecenie DROP TABLE do kopii zapasowej
'add_insert' => TRUE, // Czy dodać polecenie INSERT do kopii zapasowej
'newline' => "\n" // Znak nowej linni używany w pliku kopii zapasowej
);
$this->dbutil->backup($prefs);
Opis preferencji kopii zapasowej
Preference | Default Value | Options | Description |
---|---|---|---|
tables | empty array | None | Tablica z listą tabel, z których ma być wykonana kopia zapasowa. Pozostawiona pust, bierze pod uwagę wszystkie tabele. |
ignore | empty array | None | Tablica z listą tabel, które mają zostać pominięte w procesie wykonywania kopii zapasowej. |
format | gzip | gzip, zip, txt | Format pliku dla eksportowanego pliku. |
filename | the current date/time | None | Nazwa dla pliku z kopią zapasową. Nazwa jest potrzebna tylko, jeśli używasz kompresii zip. |
add_drop | TRUE | TRUE/FALSE | Czy dodać polecenia DROP TABLE do pliku SQL kopii zapasowej. |
add_insert | TRUE | TRUE/FALSE | Czy dodać polecenia INSERT do pliku SQL kopii zapasowej. |
newline | "\n" | "\n", "\r", "\r\n" | Typ znaku nowej linii używany w pliku SQL kopii zapasowej. |