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
,例如:
'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$
是否有使用十六进制值作为分隔符的正确方法?我在文档中找不到此类信息。
为了比较,十六进制分隔符(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 中很烦人。如果您使用的是旧版本,则可能需要升级。
From this、MySQL load data infile
命令在我的例子中与十六进制分隔符(如 X'01'
或 X'1e'
配合使用效果很好。但是在 MemSQL 上,相同的命令不能 运行 与相同的命令 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$
是否有使用十六进制值作为分隔符的正确方法?我在文档中找不到此类信息。
为了比较,十六进制分隔符(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 中很烦人。如果您使用的是旧版本,则可能需要升级。