LOAD DATA INFILE
Sintassi
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'nome_file' [REPLACE | IGNORE] INTO TABLE nome_tab [CHARACTER SET nome_charset] [{FIELDS | COLUMNS} [TERMINATED BY 'stringa'] [[OPTIONALLY] ENCLOSED BY 'carattere'] [ESCAPED BY 'carattere'] ] [LINES [STARTING BY 'stringa'] [TERMINATED BY 'stringa'] ] [IGNORE num LINES] [(nome_colonna_o_variabile_utente,...)] [SET nome_col = espr,...]
Spiegazione
L'istruzione LOAD DATA INFILE
copia le righe da un file di testo a una tabella a una velocità molto alta. Il nome del file deve essere specificato come stringa letterale.
LOAD DATA INFILE
è il complemento di SELECT ... INTO OUTFILE
.
Per scrivere dati da una tabella ad un file si usa SELECT ... INTO OUTFILE
. Per copiare dati da una file ad una tabella si usa LOAD DATA INFILE
. La sintassi delle clausole FIELDS
e LINES
è la stessa per entrambe le istruzioni. Entrambe le clausole sono opzionali, ma se sono specificate entrambe FIELDS
deve precedere LINES
.
Viene utilizzato il set di caratteri indicato dalla variabile di sistema character_set_database
per interpretare il file. SET NAMES
e l'impostazione di character_set_client
invece non hanno effetto sul modo in cui viene letto l'input. Se i contenuti del file di input utilizzano un set di caratteri diverso da quello predefinito, in genere è preferibile specificare il set utilizzato dal file tramite la clausola CHARACTER SET
, prevista per questa istruzione. Se si specifica binary
, significa "nessuna conversione".
LOAD DATA INFILE
presuppone che tutti i campi nel file usino lo stesso set di caratteri, indipendentemente dai tipi di dato delle colonne nelle quali i valori vengono caricati. Perché il contenuto del file sia letto correttamente, bisogna accertarsi che sia scritto nel set di caratteri corretto. Per esempio, se si scrive un file dei dati con mysqldump -T
o lanciando l'istruzione SELECT ... INTO OUTFILE
con mysql
, bisogna usare un'opzione
con --
default-character-setmysqldump
o con mysql
.
Nota: Attualmente non è possibile caricare dati dai file codificati in ucs2
.
La variabile di sistema character_set_filesystem
influenza la corretta interpretazione del nome del file.
E' anche possibile caricare i file utilizzando la utility mysqlimport
; essa invia un'istruzione LOAD DATA INFILE
al server. L'opzione
dice a --
localmysqlimport
di leggere i file dei dati dal client. E' possibile specificare l'opzione
per ottenere prestazioni migliori su reti lente, se il client e il server supportano il protocollo compresso.--
compress