首先宣告,此貼為轉發http://www.zhimengzhe.com/linux/187669.html的帖子。
其次說明,我用的是linux作業系統mysql 5.7,在匯入資料的時候產生了如下錯誤
ERROR 1300 (HY000): Invalid utf8 character string: ' '
在論壇上搜尋了n久,差不多都是將編碼修改為utf8的思路,但是沒有用,也試過將csv檔案改為txt檔案,也沒有用,最后找到這個帖子,按照步驟走,發現最后導表成功。
具體操作程序:
在load csv 進mysql的時候,報這個錯,苦惱了很長時間,網上搜索不到答案。
mysql> load data infile '/home/hdh/8_sr/8_45.csv' into table xizang.fp45 fields terminated by ',' escaped by '"' lines terminated by '\r\n';
解決方案:
1.查看字符集,Linux, 資料庫,表
mysql> show variables like 'character%';+--------------------------+-----------------------------+| Variable_name | Value |+--------------------------+-----------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | /home/mysql/share/charsets/ |+--------------------------+-----------------------------+8 rows in set (0.01 sec)
都是utf8,沒有問題,
2.只能對這個檔案進行特殊字符的清理了,一般遇到這個都是因為字符中間多了“\” 轉義字符。
一般遇到特殊字符的時候會提示多少行,什么字符導致的出錯,但是這個“\”,不會有這么詳細的提示。
對這個檔案 sed -i 's/"//g' filename #洗掉檔案中的"
sed -i 's/\\//g' filename #洗掉檔案中的\
重新load ok
uj5u.com熱心網友回復:
后面的解決辦法沒看懂。。1. 具體命令是#前的兩句話?
2. 你把檔案中的特殊字符洗掉了,那檔案怎么用? 因為原始檔案中,可能存在日期型資料,正好用的\等符號。。
uj5u.com熱心網友回復:
沒錯,第一個是洗掉檔案中的"具體命令為 sed -i 's/"//g' filename
第二個是洗掉檔案中的\
具體命令為 sed -i 's/\\//g' filename
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/78070.html
標籤:非技術區
上一篇:PCL Super4pcs
下一篇:Smap衛星遙感資料問題
