MemSQL load data infile 不支持十六进制分隔符

MemSQL load data infile does not support hexadecimal delimiter

From this、MySQL load data infile 命令在我的例子中与十六进制分隔符(如 X'01'X'1e' 配合使用效果很好。但是在 MemSQL 上,相同的命令不能 运行 与相同的命令 load data infile

我尝试指定不同形式的相同分隔符 \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$

是否有使用十六进制值作为分隔符的正确方法?我在文档中找不到此类信息。

为了比较,十六进制分隔符(0x1e)在MySQL:

上可以很好地工作
mysql> load data local infile '/tmp/region.tbl.hex' into table region CHARACTER SET utf8 fields terminated by 0x1e lines terminated by '\n';
Query OK, 5 rows affected (0.01 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 0

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