Используя MySQL, ЗАГРУЖАЙТЕ ДАННЫЕ в ФАЙЛ с непечатаемыми символьными разделителями

StackOverflow https://stackoverflow.com/questions/1493650

Вопрос

У меня есть некоторые данные поставщика, которые имеют 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'

работает на меня

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top