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

PHP & Base de données Discussion :

LOAD DATA INFILE : 1 csv pour 2 tables


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Points : 10
    Points
    10
    Par défaut LOAD DATA INFILE : 1 csv pour 2 tables
    Bonjour,

    Quelques jours de recherche et je ne trouve de solutions à mon problème.
    Contexte :
    Je possède 2 tables : produit et produit_i18n
    Pour faire simple je réduit mes champs :

    - PRODUIT
    ID (int) auto_increment
    CATEGORIE (INT)
    MARQUE (VARCHAR)
    PRIX (DOUBLE)

    - PRODUIT_I18N
    ID (INT) auto_increment
    LANGUE VARCHAR(2)
    TITRE VARCHAR(20)
    CONTENU TEXT

    Je veux faire un import en masse qui me rempli ces 2 tables
    Pour celà, j'utilise LOAD DATA INFILE

    1ère solution qui fonctionne :
    LOAD DATA INFILE 'mon_fichier_produit.csv' INTO TABLE PRODUIT FIELDS TERMINATED BY ';' ENCLOSED BY '\"' IGNORE 1 LINES";

    puis

    LOAD DATA INFILE 'mon_fichier_produit_traduction.csv' INTO TABLE PRODUIT_I18N FIELDS TERMINATED BY ';' ENCLOSED BY '\"' IGNORE 1 LINES";

    Avec les CSV qui ressemble à ça :
    mon_fichier_produit.csv:
    id;categorie;marque;produit
    mon_fichier_produit_traduction.csv:
    id;titre;contenu
    => Ce que je voudrais c'est à partir d'un seul fichier CSV avec ce format :
    id;categorie;marque;produit;titre;contenu
    c'est de charger les 2 tables dans un même LOAD DATA INFILE
    Un truc du genre
    LOAD DATA INFILE 'mon_fichier_produit_traduction.csv'
    INTO TABLE PRODUIT_I18N
    FIELDS TERMINATED BY ';' ENCLOSED BY '\"' IGNORE 1 LINES
    (ID,CATEGORIE,MARQUE,PRODUIT)
    INTO TABLE PRODUIT_I18N FIELDS TERMINATED BY ';' ENCLOSED BY '\"' IGNORE 1 LINES
    (ID,TITRE,CONTENU)
    Mais ça ne marche pas.
    J'ai trouvé des solutions qui consiste à mettre les mêmes champs dans des tables différentes mais ce n'est pas mon cas.

    Donc si vous avez vu ce cas, je suis GRAND prenneur ^^

    Merci de votre aide

    PS : je ne souhaite pas passer par un script PHP qui va parser mon fichier csv, car au niveau optimisation, LOAD DATA INFILE est bien au dessus

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 496
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 496
    Points : 12 596
    Points
    12 596
    Par défaut
    Tu mets ton CSV dans une table temporaire et ensuite tu fait deux select qui permettrons d'insérer tes données .

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    10
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 10
    Points : 10
    Points
    10
    Par défaut


    c'est une solution, mais au niveau perf, suivant le volume, j'ai peur du résultat.
    Je vais faire tout de même un essai pour voir ce que ça donne
    pour la réponse

Discussions similaires

  1. table A + table B (LOAD DATA INFILE) et JOIN ?
    Par ctobini dans le forum Requêtes
    Réponses: 4
    Dernier message: 03/01/2008, 17h24
  2. LOAD DATA INFILE sur table avec AUTO_INCREMENT PRIMARY KEY ?
    Par ctobini dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 30/10/2007, 11h00
  3. [csv] Load Data Infile
    Par Iphelias dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 07/08/2007, 23h55
  4. droits nécessaires pour faire un LOAD DATA INFILE
    Par Peanut dans le forum Administration
    Réponses: 11
    Dernier message: 14/06/2007, 17h03
  5. [CSV] pb LOAD DATA INFILE
    Par suya95 dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2006, 15h10

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