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.