Automatisation: xls>>csv>>sql (LOAD ou INSERT)

Résolu/Fermé
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 - 5 juil. 2013 à 18:04
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 - 9 juil. 2013 à 18:38
Bonjour,


je travaille sur Excel pour la configuration d'un base de données je convertis mes feuilles (tables) en csv et que j'injecte dans la base mysql en utiisant des LOAD DATA INFILE . donc j'ai déjà une macro qui me converti tous en csv .
J'aurais besoin d'une autre macro ou d'un code qui me génère le script sql adéquat pour chaque table (feuille) après le passage en csv .
Exemple pour une feuille (table) REGION après passage en csv (garde le même nom) que j'obtienne le script suivant :
LOAD DATA INFILE 'REGION.csv'
INTO TABLE REGION
FIELDS
TERMINATED BY ';'
ENCLOSED BY ''
LINES
STARTING BY ''
TERMINATED BY '\n'
IGNORE 1 LINES
(ID_REGION , LIBELLE )
ID_REGION et LIBELLE étant l'entête des colonnes de la table région
Remarque : le nom des tables (feuilles) est le même pour les tables de la base.
si vous avez une idée pour me permettre d'automatiser tous ça je suis preneur .
Merci et dsl pour le paragraphe .
cdlt.

3 réponses

heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 139
8 juil. 2013 à 13:30
Bonjour,

Quant à moi, j'utilise volontiers une formule Excel pour me créer les commandes d'insertion:

Tableau Excel:
 |    A    |     B     |      C     |   D    |
-+---------+-----------+------------+--------+
1| nom     | prenom    |  né(e) le  |
2| DUPONT  | Jean      | 15/04/1951 |= formules ci-dessous
3| DUVAL   | Iseut     | 28/07/1981 |= formules ci-dessous

D2: ="INSERT INTO table (nom,prenom,dnais) VALUES ('"&A2&"','"&B2&"','"&TEXTE(C2;"AAAA-MM-JJ")&"');"
D3: ="INSERT INTO table (nom,prenom,dnais) VALUES ('"&A3&"','"&B3&"','"&TEXTE(C3;"AAAA-MM-JJ")&"');"

Cela produit les résultats suivants :
INSERT INTO table (nom,prenom,dnais) VALUES ('DUPONT','Jean','1951-04-15');
INSERT INTO table (nom,prenom,dnais) VALUES ('DUVAL','Yseut','1981-07-28');

Nota:
- J'ai mis un champ de type date pourun exemple de conversion vers SQL
- si les zones de textes comprennent des apostrophes (ex: nom = d'Ormesson) effectuer un Rechercher/Remplacer... et remplacer ' par \' ou remplacer ' par '' (deux apostrophes pas le guillemet)

Copier/Coller... Insérer SQL dans phpMyAdmin par exemple
Copier/Coller... dans Bloc-notes, puis enregistrer dans un fichier texte : insert_table.sql
1
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 1
9 juil. 2013 à 14:09
C'est une idée , je fais un essaie et je te tiens au courant !!
Merci en tout cas !
0
JANGO5 Messages postés 92 Date d'inscription mardi 18 juin 2013 Statut Membre Dernière intervention 13 août 2014 1
9 juil. 2013 à 18:38
C'est plutôt pas mal, je vais essayer de travailler encore dans cette direction pour améliorer la manoeuvre
Merci heliconius .
0