IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

LOAD DATA INFILE et lignes dupliquées


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 45
    Points : 13
    Points
    13
    Par défaut LOAD DATA INFILE et lignes dupliquées
    Bonjour,

    j'ai un soucis avec l'utilisation de load data infile dans un script php.
    J'importe des données via un fichier csv, mais sa structure est un peu différente de la structure de la table mysql: dans mon csv, il y a 3 colonnes que je veux grouper en une seule dans ma table (sans perdre le lien avec les autres valeurs de ma ligne, evidemment). Je fais ça en plusieurs requêtes, en 3 requetes donc (1 par colonne du csv, en laissant en @dummy les 2 autres).
    Ca marche très bien, mais lorsque je fais un deuxieme import de ces mêmes données, ça me duplique certaines lignes où il y a des valeurs nulles. En effet, il y a des valeurs nulles dans certaines des 3 colonnes de mon csv, selon la ligne étudiée.
    Voici mon script pour gérer les null (identique pr mes 3 requetes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SET colonne_table_mysql = CASE @colonne_de_mon_csv WHEN '' THEN null else @colonne_de_mon_csv END;"
    A noter que j'ai un index unique sur l'ensemble des champs de ma table (en effet, ma "clé primaire" correspond à l'ensemble des champs).
    A noter également que lorsque les valeurs de ces 3 colonnes de mon csv ne sont pas nulles, il n'y a pas de duplication lors d'imports multiples.
    Ma question: comment éviter la duplication des lignes avec valeur nulle lors d'imports futurs?

    Merci! (si vous avez besoin de plus d'infos sur mes fihciers/scripts, n'hésitez pas! je me rends pas compte si je suis assez clair ou non...)

  2. #2
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 45
    Points : 13
    Points
    13
    Par défaut
    Je pense en fait que le soucis vient de ces 3 requêtes.
    En fait, un des impératifs de mon import est de supprimer les doublons dès l'import. D'où l'index unique dans la structure de ma table. Ca marche bien pour les valeurs non nulles. Mais les valeurs nulles gérées par l'opérateur SET ne sont apparemment pas considérées comme des doublons entre mes 3 requêtes.
    En effet, dès le 1er import, j'ai des lignes "dupliquées" si il y a plus d'une valeur nulle par ligne au niveau de ces 3 colonnes. Je pense que le fait qu'une requete gère une seule de ces 3 colonnes à la fois (dans le but d'intégrer ces données dans une unique colonne en base, pour rappel) est ce qui pose soucis.
    Ce que je ne comprends pas, c'est que si la valeur n'est pas nulle, il n'y a plus de duplication. Ce qui semble logique lorsqu'on fait un seul import: la valeur n'est lue qu'une fois. Mais cela marche après plusisuers imports: les valeurs non nulles ne sont pas dupliquées, grâce à l'index unique.
    Pourquoi l'index unique ne fait pas son travail dans le cas de valeurs nulles?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2018
    Messages : 45
    Points : 13
    Points
    13
    Par défaut
    ah mince je ne savais pas que load data infile était spécifique à mysql.
    Du coup, est ce possible de faire la même chose avec un insert into? Ou il faut forcément passer par une ouverture et lecture du fichier csv? Dans ce cas, quel est l'intérêt d'un csv si on ne peut pas faire un import automatique via une requête sql standard?

Discussions similaires

  1. [LOAD DATA INFILE] clé auto incrémentés
    Par ashurai dans le forum Requêtes
    Réponses: 2
    Dernier message: 15/02/2006, 17h17
  2. Réponses: 5
    Dernier message: 18/04/2005, 12h38
  3. probleme avec "LOAD DATA INFILE" et les b
    Par Koo dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/07/2004, 09h37
  4. Problème avec LOAD DATA INFILE
    Par ka0z dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 04/06/2004, 14h59
  5. petit soucis lors d'un LOAD DATA INFILE
    Par Jovial dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 04/06/2004, 11h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo