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

Résolu
JANGO5 Messages postés 98 Statut Membre -  
JANGO5 Messages postés 98 Statut Membre -
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

  1. heliconius Messages postés 584 Statut Membre 143
     
    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
  2. JANGO5 Messages postés 98 Statut Membre 1
     
    C'est une idée , je fais un essaie et je te tiens au courant !!
    Merci en tout cas !
    0
  3. JANGO5 Messages postés 98 Statut Membre 1
     
    C'est plutôt pas mal, je vais essayer de travailler encore dans cette direction pour améliorer la manoeuvre
    Merci heliconius .
    0