我想使用命令将 txt 文件导入 mysql 数据库
LOAD DATA LOCAL INFILE 'c:/mydatabase.txt' INTO TABLE mytable COLUMNS TERMINATED BY '\t'
但是,数据的一列是包含特殊字符(如“\”)的文件路径。我发现上面的导入命令只是跳过了路径名字符串中的所有“\”。
将数据导入mysql时有什么方法可以保留特殊字符?
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
子句中使用它。