I det här inlägget kommer jag att dela det snabbaste sättet att importera stor CSV-fil till MySql med MySql CLI. Du kan ha laddat ner produktflöde eller någon annan rapport från andra källor, men filstorleken du har laddat ner är cirka 2 GB med 5 miljoner rader. Och letar efter det snabbaste sättet att importera denna enorma CSV-fil till din MySql-databas, då är det här inlägget för dig.
Att importera en stor .csv-fil på cirka 2 GB från PhpMyAdmin är mycket tråkig uppgift, och du kanske inte lyckas importera filen ordentligt. Du kan fasa anslutningstimeout, exekveringstimeoutfel. Att importera fil med http-port kommer att ta mycket tid. Så jag föreslår att du använder MySql CLI för att importera den här typen av enorma filer till din MySql-databas. Som du vet är kommandoraden det snabbaste sättet att göra uppgiften gjord. Här kommer jag att dela några MySql-frågor som hjälper dig att importera CSV-fil till din MySql-databas på några minuter.
Läs även : Hur man delar upp en stor csv-fil i mindre filer
Logga in på MySql-databasen med CLI
mysql -u username -p dbname --local-infile |
Efter att ha kört följande kommando kommer det att fråga efter databaslösenord, skriv lösenord och tryck enter och du kommer att logga in i ditt MySql-kommandogränssnitt, här kan du köra vilken fråga som helst, varje fråga går kvällsmat snabbt här, försök när du verkligen kan spara tid på att köra stora frågor.
MySql-fråga för att importera CSV-fil på kommandoraden
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; |
Om du har tabbseparerad CSV-fil kan du använda följande fråga, bara byt ut FÄLT AVSLUTADE AV ',' från FÄLT AVSLUTADE AV '\t'
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; |
Om du bara vill att specifika kolumner behöver infogas från CSV-filen till MySql-databasen, använd följande fråga för att ignorera oönskade CSV-kolumner.
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]; |
Där kol1,2,3,4,5,6 är CSV-filkolumnen @ kommer att ignorera alla kolumner förutom de databaskolumner som du har ställt in som [email protected],[email protected], [email protected]