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

MySQL Discussion :

Créer une vue avec des tables de colonnes différentes


Sujet :

MySQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut Créer une vue avec des tables de colonnes différentes
    Bonjour à tous,

    j'ai plusieurs fichiers excel que je veux convertir en csv pour importation dans une base de donnée et je veux créer une vue avec toutes ces tables. le problème est que ces fichiers excel ont été améliorées parfois donc ont des colonnes différentes mais beaucoup de colonnes en communs souvent un peu plus de colonnes que d'autres. je veux une requête qui va récupérer toutes les données des colonnes qui se ressembles et rajouter celles qui manque en fin de fichier

    ps: les fichiers sont nombreux il serai difficile de les étudier tous, ce que je veux eviter depuis longtemp

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 129
    Points : 38 540
    Points
    38 540
    Billets dans le blog
    9
    Par défaut
    bonjour,

    Dans une base de données relationnelle, il existe un catalogue dans lequel on trouve notamment les noms des colonnes de chaque table, avec leur type, leur longueur, et autres caractéristiques.
    Il est donc aisé de savoir si deux colonnes de deux tables sont identiques ou non.
    Rien de tel à ma connaissance dans un classeur excel (qui n'est évidement pas une base relationnelle)
    Donc je ne vois pas ce que vous pourriez automatiser à partir d'un support excel

    Communiquez un extrait de votre doc excel et un exemple de résultat attendu sait on jamais

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    merci pour l'attention, mais les fichiers c'est des centaines du coup je ne peux pas tout etudier faire des requetes sur les tables une à une c'est ce que je veux éviter en fait

  4. #4
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    On peut automatiser le travail, à la condition que vos fichiers Excel soient standardisés.
    Par exemple, en première ligne, vous avez le nom des colonnes qui sont présentes dans un fichier Excel.
    Et par la suite, à partir de la deuxième ligne, vos données.
    Et bien sûr, tous vos fichiers Excel se trouvent dans le même répertoire.
    Ce traitement devra se faire en partie en php et en mysql.

    Dans une première boucle, on lit tous les fichiers Excel en récupérant que la première ligne.
    On stocke les noms de vos colonnes dans un tableau php en précisant à quel fichier Excel elles vont se rapporter.
    Ensuite, on crée la table de travail où toutes vos colonnes seront regroupés d'une manière unique et en typant vos colonnes en "varchar(255)".

    Dans la seconde boucle, pour un fichier Excel donnée, on va créer la commande "load data local infile" avec les colonnes précédemment stockés en php.
    On effectue le chargement puis on passe au deuxième fichier excel et ainsi de suite, jusqu'à la fin de la boucle.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    Bonjour artemus,

    mon probleme est que je veux éviter de programmer parce que je ne maitrise pas trop, le boulot est un peu préssé sinon j'ai conscience que un language realisera cela mai cela me mettra en retard parce qu'il y'aura un melange d'apprentissage et execution ce qui ne sera pas aisé pour moi

  6. #6
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 129
    Points : 38 540
    Points
    38 540
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Artemus24 Voir le message
    Ensuite, on crée la table de travail où toutes vos colonnes seront regroupés d'une manière unique et en typant vos colonnes en "varchar(255)".
    Comme ça la table finale n'a que des colonnes de type varchar, ce qui provoque un alignement inadéquat des valeurs numériques (identifiants, montants, taux) qui seront tous cadrés à droite, les décimales seront perdues et l'utilisation des dates est impossible.
    Si de plus cette table finale doit être utilisée en jointure avec d'autres tables, il faudra utiliser des fonctions pour convertir les types, d'où perfs désastreuses
    Solution difficilement envisageable donc

    @Dosco10 : du coup je me répète
    Citation Envoyé par escartefigue Voir le message
    Communiquez un extrait de votre doc excel et un exemple de résultat attendu sait on jamais

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut à tous.

    @ Dosco10 : j'ai bien compris que vous recherchez à automatiser le chargement de vos fichiers Excel, en intervenant le moins possible manuellement.
    La programmation est un passage obligé car sans cela, je ne voie pas trop comment faire.

    @ Escartefigue : Tout ce que veut Dosco10, c'est automatiser le chargement sans connaitre le contenu de ces fichiers Excel.
    Si vous ne connaissez pas le nombre de colonnes, le noms de ces colonnes ainsi que leur type, vous faites comment pour créer une table MySql ?

    Je rejoins Escartefigue sur le contenu de vos fichiers Excel.
    Communiquez nous un extrait du contenu de vos fichiers excel et du travail final attendu.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    Nom : Capture du 2018-03-15 16-49-49.png
Affichages : 105
Taille : 14,8 KoNom : Capture du 2018-03-15 16-51-11.png
Affichages : 111
Taille : 26,1 Ko


    voilà 2 fichiers different vous pouvez voir la difference et maintenant voilà comment je souhaite que ce soit

    Nom : Capture du 2018-03-15 17-12-35.png
Affichages : 122
Taille : 23,2 Ko

  9. #9
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut Dosco10.

    La ligne N°1 contient bien le nom des colonnes comme je l'avais supposé.
    Aucune indication sur la type de la colonne. Une simple codification en ligne N°2 aurait largement suffit pour indiquer le type.

    Ce que vous nous demandé est de l'ordre d'un développement pour répondre à votre besoin.
    Nous pouvons vous aider sur la compréhension d'un problème, mais en aucune façon, nous ne ferrons à votre place le travail que vous nous demandez.

    Voici un exemple de chargement d'un fichier Excel (*.csv) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS trav
    --------------
     
    --------------
    CREATE TABLE trav (
      col_num   integer      null default null,
      col_date  datetime     null default null,
      col_char  varchar(255) null default null
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    LOAD DATA LOCAL INFILE 'fichier.txt'
         INTO TABLE `trav`
         CHARACTER SET latin1
         FIELDS TERMINATED            BY ';'
                OPTIONALLY ENCLOSED   BY '\"'
                ESCAPED               BY '\\'
         LINES  TERMINATED            BY '\r\n'
         IGNORE 0 LINES
         (@F1, @F2, @F3)
         set col_num  =             trim(@F1),
             col_date = str_to_date(trim(@F2), '%d/%c/%Y %H:%i:%s'),
             col_char =             trim(@F3)
    --------------
     
    --------------
    select * from trav
    --------------
     
    +---------+---------------------+--------------------+
    | col_num | col_date            | col_char           |
    +---------+---------------------+--------------------+
    |    NULL | 2014-05-10 15:33:17 | web                |
    |     125 | 2014-05-15 23:53:59 | alpha; beta; gamma |
    |    -247 | NULL                | zéro               |
    +---------+---------------------+--------------------+
    --------------
    COMMIT
    --------------
     
    --------------
    SET AUTOCOMMIT = 0
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  10. #10
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2016
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2016
    Messages : 44
    Points : 35
    Points
    35
    Par défaut
    merci artemus je sais que je dois programmer mais je voulais l' éviter si vous le dite alors je vais m'y mettre mais avec assez d'amertume. mais quand vous parlez de codification à quoi faites vous allusion?

  11. #11
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 054
    Points
    19 054
    Par défaut
    Salut dosco10.

    Citation Envoyé par dosco10
    mais quand vous parlez de codification à quoi faites vous allusion?
    Je faisais allusions à Php.

    Je vous conseille de vous tourner vers le forum "php-mysql" pour vos questions concernant le développement que vous devez entreprendre en php.

    En admettant que vos colonnes dans le fichier Excel soient toujours les même, dans votre traitement php, vous devrez, lors de la construction de la table mysql de travail, associer le bon type correspond à ce que vous allez charger.

    Vous n'avez pas soulever la question de la fusion de vos fichiers Excel.
    Dois-je comprendre qu'une ligne d'un fichier Excel est indépendante de toutes les autres lignes de tous les fichier Excel ?
    Ou bien, vous devez faire des associations sur un critère comme un numéro client.

    Autrement dit, il y a le chargement dans la table mysql de travail, mais il y a aussi la répartition de vos lignes dans vos autres tables mysql, celle de votre base de données.
    Savez-vous comment vous allez vous y prendre ?

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

Discussions similaires

  1. Comment créer une vue avec des paramètres (objets) ?
    Par Ryu2000 dans le forum Eclipse Platform
    Réponses: 25
    Dernier message: 12/12/2012, 13h11
  2. Créer une vue avec des conditions
    Par jamdinhe dans le forum Langage SQL
    Réponses: 4
    Dernier message: 02/12/2012, 09h59
  3. [PPT-2003] créer un tableau avec des largeurs de colonnes différentes
    Par headachemaster dans le forum VBA PowerPoint
    Réponses: 7
    Dernier message: 29/12/2010, 22h19
  4. Créer une vue avec des onglets
    Par Flackou dans le forum MFC
    Réponses: 2
    Dernier message: 14/06/2007, 11h43
  5. Créer une vue avec des requêtes UNION ?
    Par webtheque dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/04/2005, 12h37

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