在this中,MySQL <input>
命令与十六进制定界符(例如load data infile
或X'01'
)一起很好地工作。但是,同一命令不能与MemSQL上的同一命令X'1e'
一起运行。
我尝试指定同一定界符load data infile
的各种形式,例如:
\x1e
或'0x1e'
0x1e
X'1e'
或'\x1e'
以上所有方法均无效,并抛出'x1e'
或其他类似错误:
这就像分隔符无法正确解析一样:
syntax error
这是语法错误:
mysql> load data local infile '/container/data/sf10/region.tbl.hex' into table REGION CHARACTER SET utf8 fields terminated by '\x1e' lines terminated by '\n';
ERROR 1261 (01000): Row 1 doesn't contain data for all columns
数据实际上由mysql> load data local infile '/container/data/sf10/region.tbl.hex' into table REGION CHARACTER SET utf8 fields terminated by 0x1e lines terminated by '\n';
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0x1e lines terminated by '\n'' at line 1
mysql>
的不可打印十六进制字符分隔,行以常规\x1e
终止。使用\n
可以看到分隔字符为cat -A
。因此分隔符应该正确。
^^
是否存在使用十六进制值作为分隔符的正确方法?我在文档中找不到此类信息。
出于比较目的,十六进制分隔符($ cat -A region.tbl.hex
0^^AFRICA^^lar deposits. blithely final packages cajole. regular waters are final requests. regular accounts are according to $
1^^AMERICA^^hs use ironic, even requests. s$
)在MySQL上可以很好地工作:
0x1e
答案 0 :(得分:0)
从6.7开始,MemSQL支持十六进制分隔符,形式是问题的最后一个代码块。在此之前,您需要在sql字符串中使用带引号的文字字符0x1e,这在CLI中很烦人。如果您使用的是旧版本,则可能需要升级。