С эта , команда MySQL load data infile
хорошо работает с шестнадцатеричным разделителем, таким как X'01'
или X'1e'
в моем случае. Но та же команда не может быть запущена с той же командой load data infile
в MemSQL.
Я пытался указать различные формы одного и того же разделителя \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