MySQL 可以采用2種簡單的方法將之前備份文件中的數(shù)據(jù)加載進(jìn) MySQL 數(shù)據(jù)庫。
MySQL 利用 LOAD DATA 語句作為批量數(shù)據(jù)加載器。下面這個范例將從當(dāng)前目錄中讀取 dump.txt 文件,然后把它加載進(jìn)當(dāng)前數(shù)據(jù)庫的表 mytbl 中。
mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
:)分隔,每行由換行符及回車符所終止。 mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl
-> FIELDS TERMINATED BY ':'
-> LINES TERMINATED BY '\r\n';
mysql> LOAD DATA LOCAL INFILE 'dump.txt'
-> INTO TABLE mytbl (b, c, a);
MySQL 還包含一個工具程序:mysqlimport。它相當(dāng)于 LOAD DATA 的一個封裝器,因而你可以直接從命令行中加載輸入文件。
將 dump.txt 中的數(shù)據(jù)加載進(jìn)表 mytbl,可以在 UNIX 系統(tǒng)的命令行中使用以下命令:
$ mysqlimport -u root -p --local database_name dump.txt
password *****
如果使用mysqlimport,命令行選項就會提供格式說明符。mysqlimport 命令作用相當(dāng)于前面的兩個LOAD DATA 語句,語法如下:
$ mysqlimport -u root -p --local --fields-terminated-by=":" \
--lines-terminated-by="\r\n" database_name dump.txt
password *****
對于 mysqlimport 來說,你怎么指定選項的次序并不重要,只要把它們寫在數(shù)據(jù)庫名稱前面就可以了。
mysqlimport 語句使用 --columns 選項來指定列次序。
$ mysqlimport -u root -p --local --columns=b,c,a \
database_name dump.txt
password *****
FIELDS 子句能指定除了 TERMINATED BY 之外的其他格式選項。默認(rèn)情況下,LOAD DATA 會假定值不加引號,并把反斜杠(\)解釋為表示特殊意義的轉(zhuǎn)義字符。要想明確指定引號字符,需使用 ENCLOSED BY 。MySQL 會在處理輸入時將該字符從數(shù)據(jù)值末尾清除掉。改變默認(rèn)的轉(zhuǎn)義字符,需使用 ESCAPED BY。
在指定 ENCLOSED BY 來表示引號字符應(yīng)該從數(shù)據(jù)值末尾清除時,有可能在數(shù)據(jù)值中包含引號字符,或在其之前添加轉(zhuǎn)義字符。比如,如果引號和轉(zhuǎn)義字符是"和\,那么輸入值"a""b\"c"就會被解讀為a"b"c。
對于 mysqlimport 而言,相應(yīng)的指定引號和轉(zhuǎn)義值的命令行選項是--fields-enclosed-by和--fields-escaped-by。