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 --default-character-set con mysqldump 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 --local dice a mysqlimport di leggere i file dei dati dal client. E' possibile specificare l'opzione --compress per ottenere prestazioni migliori su reti lente, se il client e il server supportano il protocollo compresso.

Vedi anche

Commenti

Sto caricando i commenti......
Content reproduced on this site is the property of its respective owners, and this content is not reviewed in advance by MariaDB. The views, information and opinions expressed by this content do not necessarily represent those of MariaDB or any other party.