如何使用mysqlimport解析使用特殊字符作为分隔符的文档?

如何使用mysqlimport解析使用特殊字符作为分隔符的文档?,mysql,ascii,special-characters,mysqlimport,Mysql,Ascii,Special Characters,Mysqlimport,我试过: mysqlimport --local --fields-optionally-enclosed-by='\x254' --fields-terminated-by='\x14' testdb messages.txt 以及: mysqlimport --local --fields-optionally-enclosed-by='\xFE' --fields-terminated-by='\cT' testdb

我试过:

 mysqlimport --local  --fields-optionally-enclosed-by='\x254' 
             --fields-terminated-by='\x14' testdb  messages.txt 
以及:

 mysqlimport --local  --fields-optionally-enclosed-by='\xFE' 
             --fields-terminated-by='\cT' testdb  messages.txt 
我得到:

mysqlimport:错误:1083,字段分隔符参数不是预期的参数;使用表:消息时,请检查手册


我尝试了双引号,没有引号以及单引号,如上面所述。有人知道正确的语法应该是什么吗?

根据文档(),只有一些转义序列可用于mysqlimport,它们是:

Character   Escape Sequence
\0  An ASCII NUL (0x00) character
\b  A backspace character
\n  A newline (linefeed) character
\r  A carriage return character
\t  A tab character.
\Z  ASCII 26 (Control+Z)
\N  NULL
因此,如果您有不寻常的行尾(如“\x02\n”),除了预先格式化文件之外,别无选择。幸运的是,使用一点sed非常简单。例如,对于以“\x02\n”结尾的行和以“\x01”结尾的字段,可以使用以下bash脚本:

#!/bin/sh
FILE="$1.tmp"

# Copying
cp $1 $FILE
# Removing comments from file
sed -i '/^#/d' $FILE
# Replacing field separator
sed -i 's/\x01/\x00%/g' $FILE
# Replacing lineends
sed -i ':a;N;$!ba;s/\x02\n/\x00\n/g' $FILE
然后拍摄以下mysqlimport

mysqlimport --fields-terminated-by="\0%" --lines-terminated-by="\0\n" [...] $FILE

将很好地工作。

我开始相信问题在于mysql不喜欢不可打印的ascii字符,至少不是出于这个目的。