MySQL
CARICARE DATI INFIL
Ricerca…
Sintassi
- CARICARE DATI [LOW_PRIORITY | CONCORRENTE] [LOCAL] INFILE 'nome_file'
- INTO TABLE nome_bloc
- [Set caratteri CARATTERE]
- [{FIELDS | COLUMNS} [TERMINATO DA 'string'] [[OPTIONALLY] ENCLOSED BY 'char']]
- [LINES [STARTING BY 'string'] [TERMINATO DA 'stringa']]
- [Numero IGNORE {LINEE | RIGHE}]
- [(Col_name_or_user_var, ...)]
- [SET col_name = expr, ...]
utilizzando LOAD DATA INFILE per caricare grandi quantità di dati nel database
Considera il seguente esempio assumendo che tu abbia un ";" - CSV delimitato da caricare nel tuo database.
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992
Crea la tabella per l'inserimento.
CREATE TABLE `employee` ( `id` INT NOT NULL ,
`name` VARCHAR NOT NULL,
`sex` VARCHAR NOT NULL ,
`designation` VARCHAR NOT NULL ,
`dob` VARCHAR NOT NULL );
Utilizzare la seguente query per inserire i valori in quella tabella.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,dob)
Considera il caso in cui il formato della data non è standard.
1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993
In questo caso è possibile modificare il formato della colonna di dob
prima di inserirlo in questo modo.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,@dob)
SET date = STR_TO_DATE(@date, '%d-%b-%Y');
Questo esempio di LOAD DATA INFILE non specifica tutte le funzionalità disponibili.
Potete vedere altre referenze su LOAD DATA INFILE qui .
Importa un file CSV in una tabella MySQL
Il comando seguente importa i file CSV in una tabella MySQL con le stesse colonne rispettando le regole di quotatura e di escape di CSV.
load data infile '/tmp/file.csv'
into table my_table
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
ignore 1 lines; -- skip the header row
Carica i dati con i duplicati
Se si utilizza il comando LOAD DATA INFILE
per compilare una tabella con dati esistenti, si scoprirà spesso che l'importazione non riesce a causa di duplicati. Esistono diversi modi per superare questo problema.
CARICARE DATI LOCALI
Se questa opzione è stata abilitata nel server, può essere utilizzata per caricare un file esistente sul computer client anziché 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
CARICARE DATI INFILE 'fname' SOSTITUIRE
Quando viene utilizzata la parola chiave replace, le chiavi univoche o primarie duplicate comporteranno la sostituzione della riga esistente con nuove
LOAD DATA INFILE 'path of the file/file_name.txt'
REPLACE INTO TABLE employee
CARICARE DATI INFILE 'fname' IGNORA
L'opposto di REPLACE
, le righe esistenti verranno mantenute e quelle nuove ignorate. Questo comportamento è simile a LOCAL
descritto in precedenza. Tuttavia il file non deve esistere sul computer client.
LOAD DATA INFILE 'path of the file/file_name.txt'
IGNORE INTO TABLE employee
Carica tramite tabella intermedia
A volte ignorare o sostituire tutti i duplicati potrebbe non essere l'opzione ideale. Potrebbe essere necessario prendere decisioni in base al contenuto di altre colonne. In tal caso, l'opzione migliore è caricare in una tabella intermedia e trasferire da lì.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
importazione / esportazione
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;