无法在mysql db中加载'\'字符

时间:2015-05-26 14:08:21

标签: mysql csv

我无法将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        |
-------------------------------

3 个答案:

答案 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,这样就可以逃脱你想要的一切。