MySQL - Importazione database - Metodi di ripristino
Ci sono due semplici modi in MySQL per caricare i dati nel database MySQL da un file precedentemente sottoposto a backup.
Importazione di dati con LOAD DATA
MySQL fornisce un'istruzione LOAD DATA che funge da caricatore di dati di massa. Ecco un'istruzione di esempio che legge un filedump.txt dalla directory corrente e lo carica nella tabella mytbl nel database corrente.
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
Se la LOCAL la parola chiave non è presente, MySQL cerca il file di dati sull'host del server utilizzando l'estensione looking into absolute pathname, che specifica completamente la posizione del file, a partire dalla radice del filesystem. MySQL legge il file dalla posizione specificata.
Per impostazione predefinita, LOAD DATA presume che i file di dati contengano righe terminate da avanzamenti riga (newline) e che i valori dei dati all'interno di una riga siano separati da tabulazioni.
Per specificare un formato di file in modo esplicito, utilizzare un file FIELDS clausola per descrivere le caratteristiche dei campi all'interno di una riga e a LINESclausola per specificare la sequenza di fine riga. Il seguenteLOAD DATA L'istruzione specifica che il file di dati contiene valori separati da due punti e righe terminate da ritorni a capo e nuovo carattere di riga.
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';
Il comando LOAD DATA presuppone che le colonne nel file di dati abbiano lo stesso ordine delle colonne nella tabella. Se ciò non è vero, è possibile specificare un elenco per indicare in quali colonne della tabella devono essere caricate le colonne del file di dati. Supponi che la tua tabella abbia le colonne a, be c, ma le colonne successive nel file di dati corrispondano alle colonne b, c e a.
È possibile caricare il file come mostrato nel seguente blocco di codice.
mysql> LOAD DATA LOCAL INFILE 'dump.txt'
-> INTO TABLE mytbl (b, c, a);
Importazione di dati con mysqlimport
MySQL include anche un programma di utilità denominato mysqlimport che funge da wrapper attorno a LOAD DATA, in modo da poter caricare i file di input direttamente dalla riga di comando.
Per caricare i dati da dump.txt in mytbl, utilizzare il seguente comando al prompt di UNIX.
$ mysqlimport -u root -p --local database_name dump.txt
password *****
Se usi mysqlimport, le opzioni della riga di comando forniscono gli specificatori di formato. Ilmysqlimport comandi che corrispondono ai due precedenti LOAD DATA le istruzioni hanno l'aspetto mostrato nel seguente blocco di codice.
$ mysqlimport -u root -p --local --fields-terminated-by = ":" \
--lines-terminated-by = "\r\n" database_name dump.txt
password *****
L'ordine in cui specifichi le opzioni non ha importanza per mysqlimport, tranne per il fatto che dovrebbero precedere tutte il nome del database.
Il mysqlimport l'istruzione utilizza l'estensione --columns opzione per specificare l'ordine delle colonne -
$ mysqlimport -u root -p --local --columns=b,c,a \
database_name dump.txt
password *****
Gestione di citazioni e caratteri speciali
La clausola FIELDS può inoltre specificare altre opzioni di formato TERMINATED BY. Per impostazione predefinita, LOAD DATA presuppone che i valori non siano quotati e interpreta la barra rovesciata (\) come un carattere di escape per i caratteri speciali. Per indicare esplicitamente il carattere di citazione del valore, utilizzare ilENCLOSED BYcomando. MySQL eliminerà quel carattere dalle estremità dei valori dei dati durante l'elaborazione dell'input. Per modificare il carattere di escape predefinito, utilizzareESCAPED BY.
Quando si specifica ENCLOSED BY per indicare che le virgolette devono essere rimosse dai valori dei dati, è possibile includere le virgolette letteralmente all'interno dei valori dei dati raddoppiandole o precedendole con il carattere di escape.
Ad esempio, se le virgolette e i caratteri di escape sono "e \, il valore di input "a""b\"c" sarà interpretato come a"b"c.
Per mysqlimport, le opzioni della riga di comando corrispondenti per specificare i valori di virgolette e di escape sono --fields-enclosed-by e --fields-escaped-by.