Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Najszybszy sposób na importowanie dużego pliku CSV do MySql za pomocą MySql CLI

W tym poście zamierzam udostępnić Najszybszy sposób importowania dużego pliku CSV do MySql za pomocą MySql CLI. Być może pobrałeś plik danych o produktach lub dowolny inny raport z innych źródeł, ale rozmiar pliku, który pobrałeś, wynosi około 2 GB z 5 milionami wierszy. Szukając najszybszego sposobu na zaimportowanie tego ogromnego pliku CSV do bazy danych MySql, ten post jest dla Ciebie.



Importowanie dużego pliku .csv o wielkości około 2 GB z PhpMyAdmin jest bardzo żmudne zadanie i możesz nie być w stanie poprawnie zaimportować pliku. Możesz fazować przekroczenie limitu czasu połączenia, błąd przekroczenia limitu czasu wykonania. Importowanie pliku przez port http zajmie dużo czasu. Proponuję więc użyć MySql CLI do zaimportowania tego typu ogromnych plików do bazy danych MySql. Jak wiesz, wiersz poleceń to najszybszy sposób na wykonanie zadania. Tutaj podzielę się kilkoma zapytaniami MySql, które pomogą Ci zaimportować plik CSV do bazy danych MySql w ciągu kilku minut.

Przeczytaj także: Jak podzielić duży plik csv na mniejsze pliki

Zaloguj się do bazy danych MySql za pomocą CLI

 mysql -u username -p dbname --local-infile

Po uruchomieniu następującego polecenia zostaniesz poproszony o hasło do bazy danych, wpisz hasło i wciśnij enter, a zalogujesz się w interfejsie poleceń MySql. Tutaj możesz uruchomić dowolne zapytanie, każde zapytanie uruchamia się tutaj szybko, spróbuj raz, aby naprawdę zaoszczędzić czas na uruchamianie dużych zapytań.



Zapytanie MySql do zaimportowania wiersza poleceń pliku CSV

LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv'  INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

Jeśli masz plik CSV rozdzielany tabulatorami, możesz użyć następującego zapytania, po prostu zamień FIELDS TERMINATED BY „,” z POLÓW ZAKOŃCZONYCH PRZEZ „\t”

LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv'  INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';

Jeśli chcesz, aby tylko konkretna kolumna została wstawiona z pliku CSV do bazy danych MySql, użyj następującego zapytania, aby zignorować niechciane kolumny CSV.

LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv'  INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' (@col1,@col2,@col3,@col4,@col5,@col6) set [email protected],[email protected], [email protected];

Gdzie col1,2,3,4,5,6 to kolumna pliku CSV @ zignoruje wszystkie kolumny z wyjątkiem tych kolumn bazy danych, które ustawiłeś, takich jak [email protected],[email protected], [email protected]




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:czy w instrukcji SELECT rozróżniana jest wielkość liter?

  2. Najlepszy typ danych do przechowywania wartości pieniężnych w MySQL

  3. Jak połączyć wiele wierszy w jedną kolumnę w MySQL?

  4. Przyczyny błędu MySQL 2014 Nie można wykonać zapytań, gdy inne niebuforowane zapytania są aktywne

  5. EXTRACT() Przykłady – MySQL