Usando CARGA MySQL DATA INFILE com delimitadores de caracteres não imprimíveis
-
18-09-2019 - |
Pergunta
Eu tenho alguns dados de fornecedores que tem o SOH (caracteres ASCII 1) como delimitador de campo e STX (caracteres ASCII 2) como o delimitador de registro. É possível carregar esses dados com LOAD DATA INFILE sem pré-processamento do arquivo e substituindo aqueles personagens com algo mais comum?
Solução
eu entendi.
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);
Outras dicas
Você pode tentar FIELDS TERMINATED BY _ascii 0x02
. Eu não sei se ele vai trabalhar para LOAD DATA INFILE
, mas funciona em SELECT
(ou seja, os rendimentos SELECT _ascii 0x61
'a').
Se você estiver usando mysqlimport o formato para valores hexadecimais em campos terminada-by e linhas terminadas em-by etc é:
mysqlimport --local --user = username --password = secretos --ignore-lines = 4 --default-character-set = UTF8 --fields terminada-by = 0x01 --lines terminada-by = 0x02 --verbose databasename thefiletoimport
Você pode tentar apenas enviar o caractere ascii diretamente dentro do literal de cadeia .. se a sua ligação não tem uma charset ou codificação atribuído, em seguida, mysql pode simplesmente aceitá-la como uma cadeia válida. Você teria que fazê-lo através de uma conexão de rede ou de dados de tubulação para o cliente mysql. Eu não acho que você vai ser capaz de escrever que dentro em um console.
FIELDS TERMINATED X'01'
funciona para mim