MYSQL importa i dati da csv usando LOAD DATA INFILE

Sto importando alcuni dati di 20000 righe da un file CSV in Mysql.

Le colonne nel CSV sono in un ordine diverso rispetto alle colonne della tabella MySQL. Come assegnare automaticamente le colonne corrispondenti alle colonne della tabella Mysql?

Quando eseguo

LOAD DATA INFILE'abc.csv' INTO TABLE abc 

questa query aggiunge tutti i dati alla prima colonna.

Si prega di suggerire la syntax automatica per l’importazione dei dati in Mysql.

È ansible utilizzare il comando LOAD DATA INFILE per importare il file csv nella tabella.

Controlla questo link MySQL – LOAD DATA INFILE .

 LOAD DATA LOCAL INFILE 'abc.csv' INTO TABLE abc FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (col1, col2, col3, col4, col5...); 

Probabilmente è necessario impostare i FIELDS TERMINATED BY ',' o qualunque sia il delimitatore.

Per un file CSV, la tua dichiarazione dovrebbe assomigliare a questa:

 LOAD DATA INFILE 'data.csv' INTO TABLE tbl_name FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; 

Prima di importare il file, è necessario preparare quanto segue:

  • Una tabella di database in cui verranno importati i dati dal file.
  • Un file CSV con dati corrispondenti al numero di colonne della tabella e al tipo di dati in ogni colonna.
  • L’account, che si collega al server di database MySQL, ha privilegi FILE e INSERT.

Supponiamo di avere una tabella seguente:

inserisci la descrizione dell'immagine qui

CREA TABELLA UTILIZZANDO QUELLA SUCCESSIVA:

 CREATE TABLE IF NOT EXISTS `survey` ( `projectId` bigint(20) NOT NULL, `surveyId` bigint(20) NOT NULL, `views` bigint(20) NOT NULL, `dateTime` datetime NOT NULL ); 

IL TUO FILE CSV DEVE ESSERE FORMATTO CORRETTO PER ESEMPIO VEDA SUCCESSIVA IMMAGINE ALLEGATA:

inserisci la descrizione dell'immagine qui

Se ogni cosa va bene .. Si prega di eseguire la seguente interrogazione su LOAD DATA FROM CSV FILE:

NOTA: aggiungi il percorso assoluto del tuo file CSV

 LOAD DATA INFILE '/var/www/csv/data.csv' INTO TABLE survey FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; 

Se tutto ha fatto. hai esportato i dati da CSV alla tabella con successo

Sintassi:

 LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name' INTO TABLE `tbl_name` CHARACTER SET [CHARACTER SET charset_name] FIELDS [{FIELDS | COLUMNS}[TERMINATED BY 'string']] [LINES[TERMINATED BY 'string']] [IGNORE number {LINES | ROWS}] 

Vedi questo esempio:

 LOAD DATA LOCAL INFILE 'E:\\wamp\\tmp\\customer.csv' INTO TABLE `customer` CHARACTER SET 'utf8' FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; 

Inserisci bulk più di 7000000 di record in 1 minuto nel database (query superveloce con calcolo)

 mysqli_query($cons, ' LOAD DATA LOCAL INFILE "'.$file.'" INTO TABLE tablename FIELDS TERMINATED by \',\' LINES TERMINATED BY \'\n\' IGNORE 1 LINES (isbn10,isbn13,price,discount,free_stock,report,report_date) SET RRP = IF(discount = 0.00,price-price * 45/100,IF(discount = 0.01,price,IF(discount != 0.00,price-price * discount/100,@RRP))), RRP_nl = RRP * 1.44 + 8, RRP_bl = RRP * 1.44 + 8, ID = NULL ')or die(mysqli_error()); $affected = (int) (mysqli_affected_rows($cons))-1; $log->lwrite('Inventory.CSV to database:'. $affected.' record inserted successfully.'); 

RRP e RRP_nl e RRP_bl non sono in csv ma ​​lo calcoliamo e dopo lo inseriamo.

supponiamo che tu stia usando xampp e phpmyadmin

hai il nome del file ‘ratings.txt’ nome tabella ‘voti’ e il nome del database ‘film’

se il tuo xampp è installato in “C: \ xampp \”

copia il tuo file “ratings.txt” nella cartella “C: \ xampp \ mysql \ data \ movies”

 LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; 

Spero che questo possa aiutarti a saltare il tuo errore se lo stai facendo su localhost

È ansible caricare i dati da un file CSV o di testo. Se si dispone di un file di testo con record da una tabella, è ansible caricare tali record all’interno della tabella. Ad esempio, se si dispone di un file di testo, in cui ogni riga è un record con i valori per ogni colonna, è ansible caricare i record in questo modo.

Table.sql

 id //field 1 name //field2 

Table.txt

 1,peter 2,daniel ... 

– esempio su Windows

 LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt' INTO TABLE Table CHARACTER SET UTF8 FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; 

Se esegui LOAD DATA LOCAL INFILE dalla shell di Windows, e devi usare OPTIONALLY ENCLOSED BY '"' , dovrai fare qualcosa di simile per poter sfuggire correttamente i caratteri:

 "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out 

Stavo ricevendo Error Code: 1290. Il server MySQL è in esecuzione con l’opzione –secure-file-priv in modo che non possa eseguire questa dichiarazione

Questo ha funzionato per me su Windows 8.1 a 64 bit usando wampserver 3.0.6 a 64 bit.

File my.ini modificato da C: \ wamp64 \ bin \ mysql \ mysql5.7.14

Elimina la voce secure_file_priv c: \ wamp64 \ tmp \ (o qualsiasi altra dir qui)

Interrotto tutto – esci wamp ecc. – e riavviato tutto; poi puntare il mio file cvs su C: \ wamp64 \ bin \ mysql \ mysql5.7.14 \ data \ u242349266_recur (l’ultima dir è il mio nome di database)

eseguito LOAD DATA INFILE ‘myfile.csv’

INTO TABLE alumnos

CAMPI TERMINATI DA “,”

INCLUSO DA “” ”

LINEE TERMINATE DA ‘\ r \ n’

IGNORARE LE LINEE 1

… e VOILA !!!