Utilizzando MySQL LOAD DATA INFILE con delimitatori di caratteri non stampabili
-
18-09-2019 - |
Domanda
Ho alcuni dati fornitore che ha il SOH (caratteri ASCII 1) come delimitatore di campo e STX (caratteri ASCII 2) come delimitatore di record. E 'possibile caricare questi dati con LOAD DATA INFILE senza pre-elaborazione del file e sostituendo quei personaggi con qualcosa di più comune?
Soluzione
I got it.
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);
Altri suggerimenti
Si potrebbe provare a FIELDS TERMINATED BY _ascii 0x02
. Non so se funzionerà per LOAD DATA INFILE
, ma funziona in SELECT
(vale a dire, i rendimenti SELECT _ascii 0x61
'a').
Se si sta utilizzando mysqlimport il formato per i valori esadecimali nei campi-terminato-by e le linee-terminato-by, ecc è:
mysqlimport --local --user = nome utente --password = secret --ignore-lines = 4 --default-character-set = --fields-terminated-by UTF8 = 0x01 --lines-terminated-by = 0x02 --verbose databasename thefiletoimport
Si può provare solo l'invio del carattere ascii direttamente all'interno della stringa letterale .. se la connessione non dispone di un set di caratteri o la codifica assegnati, poi mysql può semplicemente accettare come una stringa valida. Dovreste farlo attraverso una connessione di rete, o dati di tubazioni al client mysql. Non credo che si sta andando ad essere in grado di scrivere che in in una console.
FIELDS risolto da X'01'
funziona per me