MySQL - Import bazy danych - Metody odzyskiwania
W MySQL istnieją dwa proste sposoby ładowania danych do bazy danych MySQL z pliku, którego kopia zapasowa została wcześniej utworzona.
Importowanie danych z LOAD DATA
MySQL udostępnia instrukcję LOAD DATA, która działa jak zbiorczy program ładujący dane. Oto przykładowa instrukcja odczytująca plikdump.txt z bieżącego katalogu i ładuje go do tabeli mytbl w bieżącej bazie danych.
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
Jeśli LOCAL brak słowa kluczowego, MySQL szuka pliku danych na hoście serwera przy użyciu rozszerzenia looking into absolute pathname, który w pełni określa lokalizację pliku, zaczynając od katalogu głównego systemu plików. MySQL odczytuje plik z podanej lokalizacji.
Domyślnie, LOAD DATA zakłada, że pliki danych zawierają wiersze zakończone wysunięciem o wiersz (nowe wiersze) i że wartości danych w wierszu są oddzielone tabulatorami.
Aby jawnie określić format pliku, użyj rozszerzenia FIELDS klauzula opisująca charakterystykę pól w wierszu, a LINESklauzula, aby określić sekwencję końca wiersza. NastępująceLOAD DATA instrukcja określa, że plik danych zawiera wartości oddzielone dwukropkami i wierszami zakończonymi znakami powrotu karetki i znakiem nowego wiersza.
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';
Polecenie LOAD DATA zakłada, że kolumny w pliku danych mają tę samą kolejność, co kolumny w tabeli. Jeśli tak nie jest, możesz określić listę wskazującą, do których kolumn tabeli mają zostać załadowane kolumny pliku danych. Załóżmy, że tabela ma kolumny a, b i c, ale kolejne kolumny w pliku danych odpowiadają kolumnom b, c i a.
Możesz załadować plik, jak pokazano w poniższym bloku kodu.
mysql> LOAD DATA LOCAL INFILE 'dump.txt'
-> INTO TABLE mytbl (b, c, a);
Importowanie danych za pomocą mysqlimport
MySQL zawiera również program narzędziowy o nazwie mysqlimport który działa jak opakowanie wokół LOAD DATA, dzięki czemu można ładować pliki wejściowe bezpośrednio z wiersza poleceń.
Aby załadować dane z dump.txt w mytblużyj następującego polecenia w wierszu poleceń systemu UNIX.
$ mysqlimport -u root -p --local database_name dump.txt
password *****
Jeśli użyjesz mysqlimport, opcje wiersza polecenia zawierają specyfikatory formatu. Plikmysqlimport polecenia odpowiadające dwóm poprzednim LOAD DATA instrukcje wyglądają tak, jak pokazano w poniższym bloku kodu.
$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
--lines-terminated-by = "\r\n" database_name dump.txt
password *****
Kolejność, w jakiej określasz opcje, nie ma znaczenia dla mysqlimport, poza tym, że wszystkie powinny poprzedzać nazwę bazy danych.
Plik mysqlimport instrukcja używa --columns możliwość określenia kolejności kolumn -
$ mysqlimport -u root -p --local --columns=b,c,a \
database_name dump.txt
password *****
Obsługa cytatów i znaków specjalnych
Klauzula FIELDS może określać inne opcje formatu oprócz TERMINATED BY. Domyślnie LOAD DATA zakłada, że wartości nie są cytowane i interpretuje ukośnik odwrotny (\) jako znak zmiany znaczenia dla znaków specjalnych. Aby jawnie wskazać znak cytowania wartości, użyjENCLOSED BYKomenda. MySQL usunie ten znak z końców wartości danych podczas przetwarzania danych wejściowych. Aby zmienić domyślny znak zmiany znaczenia, użyjESCAPED BY.
Po określeniu ENCLOSED BY w celu wskazania, że znaki cudzysłowu powinny zostać usunięte z wartości danych, można umieścić znak cudzysłowu dosłownie w wartościach danych, podwajając go lub poprzedzając go znakiem zmiany znaczenia.
Na przykład, jeśli cudzysłów i znaki zmiany znaczenia to „i \”, wartość wejściowa "a""b\"c" będą interpretowane jako a"b"c.
Dla mysqlimport, odpowiednie opcje wiersza polecenia do określania cudzysłowu i wartości ucieczki to --fields-enclosed-by i --fields-escaped-by.