如果是導(dǎo)入有中文的數(shù)據(jù),我的mysql 設(shè)置的utf8 字符集,所以你要導(dǎo)入的xxx.txt 文件也要保存utf-8的字符集,命令 load data infile "d:/Websites/Sxxxx/test1.txt" ignore into table `names` fields terminated by ',' enclosed by '"';
不知道用replace 這個(gè)關(guān)鍵字的話,還是會(huì)亂碼。。不同、等高手回答。
在詳細(xì)的介紹,推薦大家去看mysql手冊(cè)去吧、里面介紹的很詳細(xì)、
在使用LOAD DATA到MySQL的時(shí)候,有2種情況:
(1)在遠(yuǎn)程客戶端(需要添加選項(xiàng):--local-infile=1)導(dǎo)入遠(yuǎn)程客戶端文本到MySQL,需指定LOCAL(默認(rèn)就是ignore),加ignore選項(xiàng)會(huì)放棄數(shù)據(jù),加replace選項(xiàng)會(huì)更新數(shù)據(jù),都不會(huì)出現(xiàn)唯一性約束問題。
(2)在本地服務(wù)器導(dǎo)入本地服務(wù)器文本到MySQL,不指定LOACL,出現(xiàn)唯一性約束沖突,會(huì)失敗回滾,數(shù)據(jù)導(dǎo)入不進(jìn)去,這個(gè)時(shí)候就需要加ignore或者replace來導(dǎo)入數(shù)據(jù)。
測(cè)試如下:
(1)本地服務(wù)器導(dǎo)入本地服務(wù)器文本
mysql> show create table tmp_loaddata/G;
*************************** 1. row ***************************
Table: tmp_loaddata
Create Table:CREATE TABLE `tmp_loaddata` (
`id` int(11) NOT NULL,
`name` varchar(10) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)
ERROR:
No query specified
mysql>select * from tmp_loaddata;
+----+------+
| id | name |
+----+------+
|1 | test |
+----+------+
1 row in set (0.00 sec)
mysql>
mysql>system cat /home/zhuxu/1.txt
1,new update
2,new update
mysql>
mysql>LOAD DATA INFILE '/home/zhuxu/1.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ',';
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'
#出現(xiàn)唯一性約束沖突,會(huì)失敗回滾
mysql>select * from tmp_loaddata;
+----+------+
| id | name |
+----+------+
|1 | test |
+----+------+
1 row in set (0.00 sec)
mysql>LOAD DATA INFILE '/home/zhuxu/1.txt' IGNOREINTO TABLE tmp_loaddata FIELDS TERMINATED BY ',';
Query OK,1 row affected(0.00 sec)
Records: 2Deleted: 0Skipped: 1Warnings: 0
#使用IGNORE對(duì)于沖突的數(shù)據(jù)丟棄掉。
新聞熱點(diǎn)
疑難解答
圖片精選