linux中往MySQL導入含有中文的數據報錯

報錯內容:ERROR 1366 (HY000): Incorrect string value: ‘\xBF’ for column ‘start_address’ at row 1
主要還是因爲導入的數據中含有中文的原因。嘗試了網上的多種方案,比如將格式改爲gbk,gb2312都不行。後來是改爲utf8最終可以了。當然還伴隨着一些其他配置。具體過程如下:

1、創建表時就將含有中文的字段設置格式 character set utf8

mysql> create table user_profile(userid VARCHAR(100) NOT NULL,mobile_type VARCHAR(30),mobile_system VARCHAR(30),start_telecom VARCHAR(20) character set utf8,network_type VARCHAR(20) character set utf8,start_address VARCHAR(120) character
set utf8,PRIMARY KEY(userid));

如果表創建好之後,已經存在數據了,字段格式就不好改了,如果表裏沒數據的話,還是刪掉重新建表,比較方便。
刪除表格操作爲mysql> drop table user_profile;

2、之後再設置幾個參數 (toutiao是我的table所在的數據庫)

mysql> set names 'utf8';
mysql> alter database toutiao character set utf8;

設置好之後查看一下mysql> show variables like '%char%';
在這裏插入圖片描述
以下幾個參數都編程utf8了

3、之後就可以導入數據了(我的數據是csv格式,csv編碼格式一般默認就是utf8的)

mysql> load data infile '/var/lib/mysql-files/db_user_info.csv' into table user_profile character set utf8 fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

保險起見我這裏也是用了character set utf8.不知去掉之後可不可以,爲了減少不必要的麻煩,我這裏就帶着了在這裏插入圖片描述

就成功啦可以正常地導入數據啦

補充:後來又嘗試了一下創建新表導入數據:

mysql> create table news_article_content(newsid VARCHAR(100) NOT NULL,title VARCHAR(100),content VARCHAR(1000),create_t
ime DATE,resource VARCHAR(100),content_type VARCHAR(100),PRIMARY KEY(newsid))

新表中並沒有指定utf8格式。
在導入時使用地語句中有指定utf8格式。能夠成功導入。

mysql> load data infile '/var/lib/mysql-files/db_news_info.csv' into table news_article_content character set utf8 fields terminated by ',' optionally enclosed by '"' escaped by '"' lines terminated by '\r\n';

說明能否成功導入的重點在於以下三步:
在這裏插入圖片描述
()

後記:有一些文本很長,使用varchar不適合,需要改爲text

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章