Utilizando LOAD DATA INFILE de MySQL con delimitadores de caracteres no imprimibles
-
18-09-2019 - |
Pregunta
Tengo un poco de datos de proveedores que tiene el SOH (caracteres ASCII 1) como delimitador de campo y STX (caracteres ASCII 2) como el delimitador de registro. Es posible cargar estos datos con LOAD DATA INFILE sin pre-procesamiento del archivo y la sustitución de esos personajes con algo más común?
Solución
lo tengo.
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);
Otros consejos
Usted puede tratar de FIELDS TERMINATED BY _ascii 0x02
. No sé si va a trabajar para LOAD DATA INFILE
, pero funciona en SELECT
(es decir, los rendimientos SELECT _ascii 0x61
'a').
Si está utilizando mysqlimport el formato de valores hexadecimales en los campos-terminado por líneas y terminado en-ETC es:
mysqlimport --local user = nombre de usuario --password = --ignore líneas secretas = 4 --default-character-set = --fields terminados por UTF8 = 0x01 --lines-terminados-by = 0x02 --verbose databasename thefiletoimport
Usted puede tratar simplemente enviar el carbón ASCII directamente dentro de la cadena literal .. si su conexión no tiene un conjunto de caracteres o la codificación asignados, a continuación, MySQL puede aceptar simplemente como una cadena válida. Habría que hacerlo a través de una conexión de red, o los datos de tuberías para el cliente mysql. No creo que va a ser capaz de escribir en la que en una consola.
Campos TERMINATED POR X'01'
funciona para mí