Используя MySQL, ЗАГРУЖАЙТЕ ДАННЫЕ в ФАЙЛ с непечатаемыми символьными разделителями
-
18-09-2019 - |
Вопрос
У меня есть некоторые данные поставщика, которые имеют SOH (символ ASCII 1) в качестве разделителя полей и STX (символ ASCII 2) в качестве разделителя записей.Можно ли загрузить эти данные с помощью LOAD DATA INFILE без предварительной обработки файла и замены этих символов чем-то более распространенным?
Решение
Я понял это.
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
дает 'a').
Если вы используете mysqlimport, формат для шестнадцатеричных значений в fields-terminated-by, lines-terminated-by и т.д. Является:
mysqlimport --локальный --пользователь= имя пользователя --пароль = секретный --игнорировать-строки=4 --набор символов по умолчанию= UTF8 --поля, завершенные=0x01 --строки, завершенные= 0x02 --подробное имя базы данных thefiletoimport
Вы можете попробовать просто отправить символ ascii непосредственно внутри строкового литерала..если вашему соединению не назначена кодировка, то mysql может просто принять ее как допустимую строку.Вам нужно было бы сделать это через сетевое подключение или передать данные клиенту mysql.Я не думаю, что вы сможете ввести это на консоли.
ПОЛЯ, ЗАКАНЧИВАЮЩИЕСЯ СИМВОЛОМ X'01'
работает на меня