1、mysqlimport工具的使用
看一下命令的使用方法:
shell > mysqlimport -u root -p [--LOCAL] DBname File [option]
--fields-terminated-by=name 字段分隔符
--fields-enclosed-by=name 字段引用符
--fields-optionally-enclosed-by=name 字段引用符(只在CHAR、VARCHAR、TEXT等字符型字段上使用)
--fields-escaped-by=name 轉移字符
--lines-terminated-ny=name 記錄結束符
--ignore-lines=number 忽略前幾行
注意:如果導入導出是跨平台操作的(比如Windows和Linux),那么就要注意設置參數line-terminated-by,因為兩個操作系統的行結尾符是不一樣的。Windows上是:line=terminated-by='\r\n',Linux上設置為:line-terminated='\n'。
案例演示:
[tidb@:vg_adn_tidbCkhsTest /tmp/bak]$mysql -uroot -p123456 -P 3306 mob_adn < test.sql mysql: [Warning] Using a password on the command line interface can be insecure. [tidb@:vg_adn_tidbCkhsTest /tmp/bak]$mysqlimport -uroot -p123456 -P 3306 -h 127.0.0.1 mob_adn /tmp/bak/test.txt --fields-terminated-by='\t' --fields-optionally-enclosed-by='"' mysqlimport: [Warning] Using a password on the command line interface can be insecure. mob_adn.test: Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
由於mysqldump導出來的數據有兩個文件,一個是sql文件,一個是txt文件。所以這里先導入表的創建語句,即sql文件。然后再導入txt的文本文件
2、使用LOAD DATA INFILE方式導入文本文件
LOAD DATA [LOCAL] INFILE 'filename' INTO TABLE dataname.tablename [OPTION] [IGNORE number LINES] fields terminated by 'VALUE' fields [OPTIONALLY] ENCLOSED BY 'VALUE' fields ESCAPED BY 'VALUE' lines STARTING by 'VALUE' lines terminated by 'VALUE'
[LOCAL]表示如果是本地文件導入需要加上此參數
● fields子句:在FIELDS子句中有三個子句:TERMINATED BY、 [OPTIONALLY] ENCLOSED BY和ESCAPED BY。
如果指定了FIELDS子句,則這三個子句中至少要指定一個。
(1)TERMINATED BY用來指定字段值之間的符號,例如,“TERMINATED BY ','”指定了逗號作為兩個字段值之間的標志,默認為“\t”制表符。
(2)ENCLOSED BY子句用來指定包裹文件中字符值的符號,例如,“ENCLOSED BY ' " '”表示文件中字符值放在雙引號之間,
若加上關鍵字OPTIONALLY表示所有的值都放在雙引號之間,則只有CHAR和VARCHAR等字符數據字段被包括。
(3)ESCAPED BY子句用來指定轉義字符,例如,“ESCAPED BY '*'”將“*”指定為轉義字符,取代“\”,如空格將表示為“*N”。
● LINES子句:在LINES子句中使用TERMINATED BY指定一行結束的標志,如“LINES TERMINATED BY '?'”表示一行以“?”作為結束標志,默認值為“\n”。
LINES STARTING BY ''表示每行數據開頭的字符,可以為單個或多個,默認不是有任何字符.