我想使用命令
将txt文件导入mysql数据库LOAD DATA LOCAL INFILE 'c:/mydatabase.txt' INTO TABLE mytable COLUMNS TERMINATED BY '\t'
但是,数据的一列是包含特殊字符“file”的文件路径。我发现上面的import命令只是跳过了路径名字符串中的所有“\”。
将数据导入mysql时有没有办法保留特殊字符?
答案 0 :(得分:0)
LOAD DATA INFILE
还支持FIELDS ESCAPED BY
子句,该子句允许您指定MySQL使用哪个字符来标识字符串中的特殊字符,例如单引号字符串中的单引号或制表符(正如您在FIELDS TERMINATED BY
子句中所表示的那样,表示为\t
)。
FIELDS ESCAPED BY
子句的默认值是\
,这是一个反斜杠,这就是为什么你的路径字符被MySQL解释然后被忽略的原因;转义非特殊字符只会返回该字符,因此\1
只返回1
。但是,您会遇到c:\tmp\newfile
等文件名问题,因为\t
和\n
都被解释为特殊字符。
如果通过执行FIELDS ESCAPED BY ''
将转义字符留空,则导入将不会解释反斜杠,但如果导入中有需要转义的字符,则可能还有其他问题。您可以通过找出用于生成文本文件的转义字符来了解这一点,然后您可以在FIELDS ESCAPED BY
子句中使用它。