Mit MySQL LOAD DATA INFILE mit druckbaren Zeichenbegrenzern
-
18-09-2019 - |
Frage
Ich habe einige Lieferantendaten, die die SOH (ASCII-Zeichen 1) als Feldtrennzeichen und STX (ASCII-Zeichen 2) als Satzbegrenzer hat. Ist es möglich, diese Daten mit LOAD DATA INFILE zu laden, ohne Vorverarbeitung die Datei und ersetzt diese Zeichen mit etwas häufiger?
Lösung
Ich habe es.
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);
Andere Tipps
Sie könnten versuchen, FIELDS TERMINATED BY _ascii 0x02
. Ich weiß nicht, ob es für LOAD DATA INFILE
funktioniert, aber es funktioniert in SELECT
(das heißt, SELECT _ascii 0x61
Erträge ‚a‘).
Wenn Sie das Format für die Hex-Werte in Felder-terminated-by mit mysqlimport sind und Linien-terminated-by etc ist:
mysqlimport --local --user = username --password = secret --ignore-Linien = 4 --default-character-set = UTF8 --fields-terminated-by = 0x01 --lines-terminated-by = 0x02 --verbose database thefiletoimport
Sie können nur versuchen, die ASCII-Zeichen zu senden direkt im Stringliteral .. wenn Ihre Verbindung kein charset oder Codierung zugewiesen ist, dann kann mysql einfach als gültigen Zeichenfolge akzeptieren. Sie müßten es über eine Netzverbindung tun, oder Leitungsdaten an das MySQL-Client. Ich glaube nicht, dass du in der Lage sein, dass an einer Konsole eingeben.
FIELDS TERMINATED BY X'01'
funktioniert für mich