MYSQL télécharger à partir de CSV en conservant les valeurs null
J'ai une base de données MYSQL contenant un tas de domaines, dont beaucoup sont configure comme des valeurs numériques, soit:
thickness
double(7,2) DEFAULT NULL,
ou
has_input
tinyint(4) DEFAULT NULL,
Je dois importer un fichier csv dans cette table et ont été à l'aide de
load data local infile 'myfilepath/fichier.csv " dans le tableau
combined
fields terminated by ',' enclosed by '"' lines terminated by '\r\n';
mais tous les champs numériques sont d'avoir des valeurs null remplacé par zéro. C'est vraiment ennuyeux que certains champs ont une valeur légitime de zéro et j'ai besoin d'être en mesure de distinguer ces des champs avec aucune valeur.
Comme vous pouvez le voir ci-dessus, le champ valeurs par défaut sont définies à null et, sur d'autres conseils, je me suis inscrit \N dans tous les champs vides dans le csv pour indiquer la valeur null.
Néanmoins, les valeurs null sont toujours remplacées par zéro. Pouvez-vous m'aider?
OriginalL'auteur Ambulare | 2013-08-02
Vous devez vous connecter pour publier un commentaire.
Que les règles de traitement des colonnes NULL lors de l'importation CSV sont plutôt complexes, il ya une section dédiée sur la gestion de la valeur NULL dans la doc pour la fonction LOAD DATA INFILE:
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
Dans votre cas particulier:
Essayer de pré-traiter le fichier CSV en remplaçant manquant valeurs par le mot NULL (sans les guillemets).
Si vous avez quelque chose comme ça dans votre orginal fichier CSV:
Il devrait être transformé comme ça pour que MySQL correctement insérer la valeur NULL dans la 4ème colonne:
OriginalL'auteur Sylvain Leroux
Il pourrait être traité dans la même phrase.
D'après le tableau suivant:
et le fichier suivant .csv: test.csv
à exécuter:
résultat:
OriginalL'auteur wchiquito