sql >> Database teknologi >  >> RDS >> Mysql

Hurtigste måde at importere stor CSV-fil til MySql ved hjælp af MySql CLI

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]




  1. Bestilling af resultater af ivrigt indlæste indlejrede modeller i Node Sequelize

  2. Langsom bulk indsats til bord med mange indekser

  3. Indsæt primær nøgle til automatisk stigning i eksisterende tabel

  4. MAX() Funktion i PostgreSQL