Ricerca…


Sintassi

  1. CARICARE DATI [LOW_PRIORITY | CONCORRENTE] [LOCAL] INFILE 'nome_file'
  2. INTO TABLE nome_bloc
  3. [Set caratteri CARATTERE]
  4. [{FIELDS | COLUMNS} [TERMINATO DA 'string'] [[OPTIONALLY] ENCLOSED BY 'char']]
  5. [LINES [STARTING BY 'string'] [TERMINATO DA 'stringa']]
  6. [Numero IGNORE {LINEE | RIGHE}]
  7. [(Col_name_or_user_var, ...)]
  8. [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;


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow