我无法将CSV文件中的'\'字符加载到mysql db version 6.1
假设下面是我的excel表转换为CSV。
------------------------------
ColumnHeader1 | ColumnHeader2 |
------------------------------
BA\ |Pune |
-------------------------------
Mysql命令:
LOAD DATA LOCAL INFILE 'D:\\mydatafile.csv'
INTO TABLE mydb.mytable FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(ColumnHeader1,ColumnHeader2);
当我在上表中运行select
查询时,我得到的输出低于上表。这在mysql 6.1中运行得很好。现在升级到6.2创建的问题。
------------------------------
ColumnHeader1 | ColumnHeader2 |
------------------------------
BAPune |null |
-------------------------------
答案 0 :(得分:1)
尝试在csv文件上用\\替换所有\,看看会发生什么
来自https://dev.mysql.com/doc/refman/5.1/en/load-data.html
反斜杠是SQL语句中字符串中的MySQL转义字符,因此要指定文字反斜杠,必须为该值指定两个反斜杠,以将其解释为单个反斜杠。逃脱序列' \ t'和' \ n'分别指定制表符和换行符。
答案 1 :(得分:1)
尝试在您的查询中添加FIELDS TERMINATED BY ',' ESCAPED BY '\\'
,例如
LOAD DATA LOCAL INFILE 'D:\\mydatafile.csv'
INTO TABLE mydb.mytable FIELDS TERMINATED BY ','
FIELDS TERMINATED BY ',' ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES
(ColumnHeader1,ColumnHeader2);
答案 2 :(得分:0)
您的\
未被mysql转义,您需要将其转义才能将其存储在数据库中。
如果你只想使用你的手或mysql,你有两个选择:用手轻替 (这是一个穷人的方式){{1进入\
;
或者你可以使用\\
in an insert statement,这样就可以逃脱你想要的一切。