Maison >base de données >tutoriel mysql >Comment charger des valeurs NULL, pas des zéros, d'un CSV vers MySQL à l'aide de LOAD DATA INFILE ?

Comment charger des valeurs NULL, pas des zéros, d'un CSV vers MySQL à l'aide de LOAD DATA INFILE ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-22 07:28:09730parcourir

How to Load NULL Values, Not Zeros, from a CSV into MySQL using LOAD DATA INFILE?

MySQL : Chargement de valeurs NULL à partir de données CSV

Problème :

Lors du chargement de données à partir d'un fichier CSV avec des champs vides dans une table MySQL à l'aide de la commande LOAD DATA INFILE, MySQL attribue 0 aux champs vides au lieu de NULL, même lorsque la colonne est définie avec une valeur par défaut NULL.

Solution :

Pour charger correctement les valeurs NULL pour les champs vides, lisez le champ problématique dans une variable locale, puis définissez conditionnellement la valeur réelle du champ à NULL si la variable est vide :

LOAD DATA INFILE '/tmp/testdata.txt'
INTO TABLE moo
FIELDS TERMINATED BY ","
LINES TERMINATED BY "\n"
(one, two, three, @vfour, five)
SET four = NULLIF(@vfour,'')
;

Explication :

  • L'instruction LOAD DATA INFILE lit les données du fichier CSV dans la table moo.
  • La clause FIELDS définit les champs du fichier CSV et leurs noms de colonnes correspondants dans le tableau.
  • Le le quatrième champ (@vfour) est lu dans une variable locale au lieu de directement dans les quatre colonnes.
  • L'instruction SET vérifie si la variable @vfour est vide ('') à l'aide de la fonction NULLIF.
  • Si @vfour est vide, les quatre colonnes sont définies sur NULL ; sinon, il conserve sa valeur d'origine.

Remarque supplémentaire :

Si tous les champs peuvent potentiellement être vides, lisez-les tous dans des variables locales et utilisez plusieurs Instructions SET pour attribuer conditionnellement des valeurs NULL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn