En utilisant MySQL INFILE LOAD DATA avec caractères non imprimables délimiteurs
-
18-09-2019 - |
Question
J'ai des données du fournisseur qui a le SOH (caractère ASCII 1) comme séparateur de champ et STX (caractère ASCII 2) comme séparateur d'enregistrement. Est-il possible de charger ces données avec INFILE LOAD DATA sans pré-traitement du fichier et de remplacer ces personnages quelque chose de plus commun?
La solution
Je l'ai.
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);
Autres conseils
Vous pouvez essayer FIELDS TERMINATED BY _ascii 0x02
. Je ne sais pas si cela fonctionnera pour LOAD DATA INFILE
, mais il fonctionne en SELECT
(à savoir, les rendements SELECT _ascii 0x61
a ').
Si vous utilisez mysqlimport le format pour les valeurs hexagonales dans les champs à terminaison par des lignes à terminaison par etc est:
mysqlimport --local --user = nom d'utilisateur --password = secrètes --ignore-lines = 4 --default-character-set = UTF8 --fields à terminaison par = 0x01 --lines-terminaison par = 0x02 --verbose databasename thefiletoimport
Vous pouvez essayer simplement d'envoyer le ascii ombles directement dans la chaîne littérale .. si votre connexion ne dispose pas d'un jeu de caractères ou le codage attribué, alors MySQL peut simplement l'accepter comme une chaîne valide. Il faudrait le faire via une connexion réseau ou des données de tuyauterie au client mysql. Je ne pense pas que vous allez être capable de taper que sur une console.
FIELDS TERMINATED PAR X'01'
fonctionne pour moi