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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top