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 :
=> Ce que je voudrais c'est à partir d'un seul fichier CSV avec ce format :mon_fichier_produit.csv:
id;categorie;marque;produit
mon_fichier_produit_traduction.csv:
id;titre;contenu
c'est de charger les 2 tables dans un même LOAD DATA INFILEid;categorie;marque;produit;titre;contenu
Un truc du genre
Mais ça ne marche pas.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)
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
Partager