Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Schnellste Möglichkeit, große CSV-Dateien mit der MySql-CLI in MySql zu importieren

In diesem Beitrag werde ich den schnellsten Weg zum Importieren großer CSV-Dateien in MySql mit MySql CLI vorstellen. Möglicherweise haben Sie Produkt-Feeds oder andere Berichte aus anderen Quellen heruntergeladen, aber die Dateigröße, die Sie heruntergeladen haben, beträgt ca. 2 GB mit 5 Millionen Zeilen. Und wenn Sie nach dem schnellsten Weg suchen, diese riesige CSV-Datei in Ihre MySql-Datenbank zu importieren, dann ist dieser Beitrag genau das Richtige für Sie.



Der Import einer großen .csv-Datei mit ca mühsame Aufgabe, und es kann sein, dass Sie die Datei nicht richtig importieren können. Sie können Verbindungszeitüberschreitung, Ausführungszeitüberschreitungsfehler einstufen. Das Importieren von Dateien über den HTTP-Port wird viel Zeit in Anspruch nehmen. Daher schlage ich vor, dass Sie MySql CLI verwenden, um diese Art von riesigen Dateien in Ihre MySql-Datenbank zu importieren. Wie Sie wissen, ist die Befehlszeile der schnellste Weg, um Aufgaben zu erledigen. Hier werde ich einige MySql-Abfragen teilen, die Ihnen helfen, CSV-Dateien in wenigen Minuten in Ihre MySql-Datenbank zu importieren.

Lesen Sie auch: So teilen Sie eine große CSV-Datei in kleinere Dateien auf

Melden Sie sich mit CLI bei der MySql-Datenbank an

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

Nach dem Ausführen des folgenden Befehls werden Sie nach dem Datenbankpasswort gefragt, geben Sie das Passwort ein und drücken Sie die Eingabetaste, und Sie melden sich in Ihrer MySql-Befehlsschnittstelle an. Hier können Sie jede Abfrage ausführen, jede Abfrage wird hier schnell ausgeführt. Versuchen Sie es einmal, Sie könnten wirklich Zeit sparen beim Ausführen großer Abfragen.



MySql-Abfrage zum Importieren der CSV-Datei über die Befehlszeile

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

Wenn Sie eine tabulatorgetrennte CSV-Datei haben, können Sie die folgende Abfrage verwenden, indem Sie einfach FIELDS TERMINATED BY ‘,’ ersetzen von FIELDS TERMINATED BY ‘\t’

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

Wenn Sie möchten, dass nur eine bestimmte Spalte aus der CSV-Datei in die MySql-Datenbank eingefügt werden muss, verwenden Sie die folgende Abfrage, um unerwünschte CSV-Spalten zu ignorieren.

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];

Wobei col1,2,3,4,5,6 die Spalte @ der CSV-Datei sind ignoriert alle Spalten mit Ausnahme der Datenbankspalten, die Sie wie [email protected], [email protected], [email protected] festgelegt haben