Использование MySQL LOAD DATA INFILE с непечатаемыми символьными разделителями
У меня есть данные поставщика, в которых в качестве разделителя полей используется SOH (ASCII-символ 1), а STX (ASCII-символ 2). Можно ли загрузить эти данные с помощью LOAD DATA INFILE без предварительной обработки файла и замены этих символов чем-то более распространенным?
5 ответов
Я понял.
LOAD DATA LOCAL INFILE 'myfile.txt' INTO TABLE my_table
CHARACTER SET UTF8
FIELDS TERMINATED BY X'01'
LINES TERMINATED BY X'02'
(col1, col2, col3);
Вы можете попробовать FIELDS TERMINATED BY _ascii 0x02
, Я не знаю, будет ли это работать для LOAD DATA INFILE
, но это работает в SELECT
(То есть, SELECT _ascii 0x61
дает "а").
Если вы используете mysqlimport, то формат для шестнадцатеричных значений в fields-terminated-by, lines-terminated-by и т. Д.:
mysqlimport --local --user = имя пользователя --password=secret --ignore-lines=4 - набор символов по умолчанию =UTF8 --fields-terminated-by=0x01 --lines-terminated-by=0x02 - подробное имя базы данных
Вы можете просто отправить ascii char прямо внутри строкового литерала... если вашему соединению не назначена кодировка или кодировка, mysql может просто принять его как допустимую строку. Вы должны будете сделать это через сетевое соединение или передать данные клиенту MySQL. Я не думаю, что вы сможете набрать это на консоли.