1

我试过了:

 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,字段分隔符参数不是预期的;使用表时检查手册:消息。

我试过双引号,没有引号以及上面的单引号。任何人都知道正确的语法应该是什么?

4

1 回答 1

2

根据文档(http://dev.mysql.com/doc/refman/5.0/en/load-data.html),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

会很好地工作。

于 2012-01-21T13:30:12.280 回答