środa, 19 września 2018

MySQL - Import bazy danych


MySQL - Import bazy danych - Metody odzyskiwania


W MySQL są dwa proste sposoby ładowania danych do bazy danych MySQL z wcześniej utworzonego pliku kopii zapasowej.

Importowanie danych za pomocą LOAD DATA

MySQL dostarcza instrukcję LOAD DATA, która działa jako ładowarka danych zbiorczych. Oto przykładowa instrukcja odczytująca plik dump.txt z bieżącego katalogu i ładująca go do tabeli mytbl w bieżącej bazie danych.
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
·      Jeśli słowo kluczowe LOCAL nie jest obecne, MySQL wyszukuje plik danych na hoście serwera, korzystając z szukania absolutnej ścieżki, która w pełni określa położenie 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ą linie, które są zakończone (nowe linie), a wartości danych w linii są oddzielone tabulatorami.
·      Aby jawnie określić format pliku, użyj klauzuli FIELDS , aby opisać właściwości pól w linii oraz klauzuli LINES , aby określić sekwencję kończącą wiersz. Następująca instrukcja LOAD DATA określa, że ​​plik danych zawiera wartości oddzielone dwukropkami i wierszami zakończonymi znakami powrotu karetki i nowym znakiem linii..
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 to nie jest prawdą, możesz określić listę, która wskaże kolumny tabeli, do których mają zostać załadowane kolumny plików danych. Załóżmy, że Twoja 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 jako opakowanie danych LOAD, dzięki czemu można załadować pliki wejściowe bezpośrednio z wiersza poleceń.
Aby załadować dane z pliku dump.txt do tabeli mytbl , użyj następującego polecenia w wierszu polecenia systemu UNIX.
$ mysqlimport -u root -p --local nazwa_bazy dump.txt
password *****
Jeśli używasz mysqlimport, opcje wiersza poleceń udostępniają specyfikatory formatu. Komendy mysqlimport, które odpowiadają dwóm poprzednim instrukcjom LOAD DATA, wyglądają tak, jak pokazano w poniższym bloku kodu.
$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
   --lines-terminated-by = "\r\n"  nazwa_bazy dump.txt
password *****
Kolejność, w której określasz opcje, nie ma znaczenia dla mysqlimport, z tym że wszystkie powinny poprzedzać nazwę bazy danych.
Instrukcja mysqlimport używa opcji --columns do określenia kolejności kolumn 
$ mysqlimport -u root -p --local --columns=b,c,a \
    Nazwa_bazy dump.txt
password *****

Obsługa cudzysłowó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 są niecałkowite i interpretuje ukośnik odwrotny (\) jako znak ułamkowy dla znaków specjalnych. Aby jawnie wskazać znak cytowania wartości, użyj polecenia ENCLOSED BY. MySQL usunie ten znak z końców wartości danych podczas przetwarzania wejścia. Aby zmienić domyślny znak ucieczki, użyj ESCAPED BY.
Kiedy określasz ENCLOSED BY, aby wskazać, że znaki cudzysłowu powinny zostać usunięte z wartości danych, możliwe jest dołączenie znaku cudzysłowu dosłownie do wartości danych poprzez podwojenie lub poprzedzenie znakiem ucieczki.
Na przykład, jeśli cudzysłowami i znakami ucieczki są " i \, wartość wejściowa "a""b\"c" zostanie zinterpretowana jako "b" c .
W przypadku mysqlimport odpowiednimi opcjami wiersza polecenia dla określania wartości cudzysłowu i wartości ucieczki są --fields-enclosed-by i --fields-escaped-by.

Brak komentarzy:

Prześlij komentarz