I dette indlæg vil jeg dele den hurtigste måde at importere stor CSV-fil til MySql ved hjælp af MySql CLI. Du har muligvis downloadet produktfeed eller en hvilken som helst anden rapport fra andre kilder, men filstørrelsen har du downloadet ca. 2 GB med 5 millioner rækker. Og leder efter den hurtigste måde at importere denne enorme CSV-fil til din MySql-database, så er dette indlæg noget for dig.
Import af stor .csv-fil på ca. 2 GB fra PhpMyAdmin er meget kedelig opgave, og du kan muligvis ikke lykkes med at importere filen korrekt. Du kan fase forbindelsestimeout, udførelsestimeoutfejl. Import af fil ved hjælp af http-port vil tage meget tid. Så jeg foreslår, at du bruger MySql CLI til at importere denne type kæmpe fil til din MySql-database. Som du ved, er kommandolinjen den hurtigste måde at udføre opgaven på. Her vil jeg dele nogle få MySql-forespørgsler, som hjælper dig med at importere CSV-fil til din MySql-database på få minutter.
Læs også: Sådan opdeles store csv-filer i mindre filer
Log ind på MySql-databasen ved hjælp af CLI
mysql -u username -p dbname --local-infile |
Efter at have kørt følgende kommando vil den bede om databaseadgangskode, skrive adgangskode og trykke på enter, og du vil logge ind på din MySql-kommandogrænseflade. Her kan du køre enhver forespørgsel, hver forespørgsel kører aftensmad hurtigt her, prøv, når du virkelig kunne spare din tid på at køre store forespørgsler.
MySql-forespørgsel for at importere CSV-fil kommandolinje
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'; |
Hvis du har tabulatorsepareret CSV-fil, kan du bruge følgende forespørgsel, bare erstat FELTER TERMINERET AF ',' fra FELTER AFSLUTTES AF '\t'
LOAD DATA LOCAL INFILE 'csv_file_path/filename.csv' INTO TABLE table_name FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'; |
Hvis du kun vil have specifikke kolonner, der skal indsættes fra CSV-fil til MySql-database, så brug følgende forespørgsel til at ignorere uønskede CSV-kolonner.
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]; |
Hvor col1,2,3,4,5,6 er CSV-filkolonnen @ ignorerer hele kolonnen undtagen databasekolonnen, som du har angivet som [email protected], [email protected], [email protected]