Sintassi
utilizzando LOAD DATA INFILE per caricare una grande quantità di dati nel database
Considera il seguente esempio assumendo che tu abbia un CSV delimitato da ‘;’ da caricare nel tuo database.
1;max;male;manager;12-7-19852;jack;male;executive;21-8-1990...1000000;marta;female;accountant;15-6-1992
Crea la tabella da inserire.
Utilizza la seguente query per inserire i valori in quella tabella.
Considera il caso in cui il formato della data non è standard.
1;max;male;manager;17-Jan-19852;jack;male;executive;01-Feb-1992...1000000;marta;female;accountant;25-Apr-1993
In questo caso puoi cambiare il formato della colonna dob
prima di inserire in questo modo.
Questo esempio di LOAD DATA INFILE non specifica tutte le caratteristiche disponibili.
Puoi vedere altri riferimenti su LOAD DATA INFILE qui.
Importa un file CSV in una tabella MySQL
Il seguente comando importa file CSV in una tabella MySQL con le stesse colonne rispettando le regole di citazione ed escaping CSV.
Caricare dati con duplicati
Se usi il comando LOAD DATA INFILE
per popolare una tabella con dati esistenti, troverai spesso che l’importazione fallisce a causa di duplicati. Ci sono diversi modi possibili per superare questo problema.
Se questa opzione è stata abilitata nel vostro server, può essere usata per caricare un file che esiste sul computer client piuttosto che sul server. Un effetto collaterale è che le righe duplicate per valori unici vengono ignorate.
LOAD DATA LOCAL INFILE 'path of the file/file_name.txt' INTO TABLE employee
Caricamento dati INFILE ‘fname’ REPLACE
Quando viene usata la parola chiave replace le chiavi uniche o primarie duplicate risulteranno nella riga esistente verrà sostituita con una nuova
LOAD DATA INFILE 'path of the file/file_name.txt' REPLACE INTO TABLE employee
LOAD DATA INFILE ‘fname’ IGNORE
Il contrario di REPLACE
, le righe esistenti saranno conservate e quelle nuove ignorate. Questo comportamento è simile a LOCAL
descritto sopra. Tuttavia il file non deve necessariamente esistere sul computer client.
LOAD DATA INFILE 'path of the file/file_name.txt' IGNORE INTO TABLE employee
Caricamento tramite tabella intermedia
A volte ignorare o sostituire tutti i duplicati può non essere l’opzione ideale. Potrebbe essere necessario prendere decisioni basate sul contenuto di altre colonne. In questo caso l’opzione migliore è caricare in una tabella intermedia e trasferire da lì.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
importare / esportare
importare
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
Esportare
LOAD DATA INFILE 'result.txt' INTO TABLE table;