MemSQL加载数据文件中的文件不支持十六进制分隔符

时间:2019-01-23 07:02:31

标签: delimiter load-data-infile memsql

this中,MySQL <input>命令与十六进制定界符(例如load data infileX'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

1 个答案:

答案 0 :(得分:0)

从6.7开始,MemSQL支持十六进制分隔符,形式是问题的最后一个代码块。在此之前,您需要在sql字符串中使用带引号的文字字符0x1e,这在CLI中很烦人。如果您使用的是旧版本,则可能需要升级。