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

SQL Procédural MySQL Discussion :

Créer une table avec un grand nombre de colonnes


Sujet :

SQL Procédural MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut Créer une table avec un grand nombre de colonnes
    Bonjour,
    je suis débutant en la matière mais j'aurais aimé savoir comment sous phpmyadmin dans la rubrique requête SQL exécuter un programme me permettant de faire la chose suivant:

    J'ai créé une table dans laquelle j'aimerais insérer 3690 colonnes ayant pour intitulé -744,4 pour la première, -743,38 pour la deuxième etc etc ( en fait je dois ajouter 1.01459474 à chaque création de colonne).

    j’exécute le prog suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    BEGIN
    FOR i IN 0..3689
    LOOP
    j=-744,4 + i*1,01459474
    ALTER TABLE nom_de_ma_table ADD j float
    END LOOP;
    END;
    phpmyadmin me renvoi une erreur de syntaxe (sur le "0.." de la ligne 2 qui au passage lui appèle ligne 1 )

    Alors j'ai juste essayer d'ajouter une colonne sans passer par une boucle FOR et la pas de soucis (donc ça sens vraiment l'erreur de syntaxe mais je vois pas ou)
    Est ce quelqu'un pourrais m'aider? d'avance un grand merci...

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    qu'est-ce qui peut bien justifier la création d'un aussi grand nombre de colonnes, qui plus est avec un nom numérique ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 998
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 998
    Billets dans le blog
    6
    Par défaut
    La stupidité... Hélas courante dans ce forum ou les gens n'ont aucune idée de ce qu'ils font !

    Audiard faisait dire à Lino Ventura : "Les cons ça ose tout, c’est même à ça qu’on les reconnaît", dans les tontons flingueurs...
    http://www.stupiditiz.com/sequence-c...les-reconnait/

    Bon, je vais encore passé pour un salaud... Mais comme disait encore Audiard, "un intellectuel assis va moins loin qu'un con qui marche !" (Un Taxi pour Tobrouk)

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2009
    Messages : 540
    Par défaut
    Pourquoi n'expliques-tu donc pas pas pourquoi tu tiens à avoir un nombre de colonne si grand ? Comme le remarquent d'autres membres, ce que te cherches à faire n'est pas optimisé.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3
    Par défaut
    C'est toujours agréable de se faire traiter de stupide....enfin.

    Alors pour ceux qui ont un poil plus de tact voilà comment cela se présente:

    J'ai trois puits géothermique d'environ 300m de profondeur chacun. Je dispose également d'une fibre optique qui parcour l'ensemble de ces forages(soit plus de 1200m allé retour) à chaque 1/2mètre un capteur de température est disposé est donc renseigne sur la température du forage.
    Un dispositif recueille toutes les températures de la journée et en fait un fichier sous forme de colonne. La première c'est les '1/2" mètre la deuxième la température. Voilà concernant cette partie rien n'est modifiable.

    J'aimerais faire de ces fichiers journaliers une base de données avec donc autant de colonnes que ce qui à de 1/2 mètres. Par la suite quand je voudrais tracer l'évolution de la température a 150 m de profondeur par exemple, j'ai juste une colonne à consulter, importer , traiter etc etc...

    C'est peut être stupide pour certain d'entre vous mais la configuration du fichier que l'on me donne (qui je le répète est non modifiable pour des raisons de politique d'entreprise) en est ainsi...

    Si vous avez des solutions plutôt que des insultes je suis prenneur

    Merci

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 814
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par mouky66 Voir le message
    Un dispositif recueille toutes les températures de la journée et en fait un fichier sous forme de colonne. La première c'est les '1/2" mètre la deuxième la température. Voilà concernant cette partie rien n'est modifiable.
    Donc ton fichier brut n'a que deux colonnes ?

    J'aimerais faire de ces fichiers journaliers une base de données avec donc autant de colonnes que ce qui à de 1/2 mètres.
    Ça c'est ce que nous avons, avec plus ou moins de tact mais néanmoins avec raison, considéré comme une grosse erreur !

    Par la suite quand je voudrais tracer l'évolution de la température a 150 m de profondeur par exemple, j'ai juste une colonne à consulter, importer , traiter etc etc...
    Sauf que l'apparente facilité du programme nécessite une lourdeur de la table qui sera probablement au final pénalisante pour les performances.
    Tu essaies d'utiliser une base de données comme un tableur et ce n'est tout simplement pas ce qu'il faut faire !

    Donc reprenons...
    J'ai trois puits géothermique d'environ 300m de profondeur chacun. Je dispose également d'une fibre optique qui parcour l'ensemble de ces forages(soit plus de 1200m allé retour) à chaque 1/2mètre un capteur de température est disposé est donc renseigne sur la température du forage.
    Je ne sais pas comment tu différenties les 3 puits avec une seule fibre optique dans ton fichier de données mais bon...

    Un dispositif recueille toutes les températures de la journée et en fait un fichier sous forme de colonne. La première c'est les '1/2" mètre la deuxième la température.
    Si, comme je l'ai supposé plus haut, ton fichier n'a bien que deux colonnes, il te suffit de l'importer dans une unique table qui ne sert qu'à l'importation puisque :
    ces fichiers journaliers
    tu as donc semble t-il un fichier par jour.

    1) Tu crées une table d'importation avec cette structure :
    importation (imp_demi_metre, imp_temperature)

    2) Tu places un index simple sur la colonne imp_demi_metre.

    3) Tu crées une table pour y enregistrer tes données avec une colonne pour le jour :
    mesure (mes_id, mes_date, mes_demi_metre, mes_temperature)
    La colonne "mes_id" est de type entier, auto-incrémenté et forme la clé primaire de la table.

    4) Tu places un index UNIQUE sur le couple (mes_jour, mes_demi_metre) et éventuellement un index simple sur mes_demi_metre afin d'accélérer les recherches dans les données par la suite.

    5) Tous les jours (par programme externe ou procédure MySQL :
    - tu TRUNCATE la table d'importation ;
    - tu y importes ton fichier dans la avec une requête LOAD DATA INFILE ;
    - tu transfères les données de la table d'importation vers la table mesure avec cette requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    INSERT INTO mesure (mes_jour, mes_demi_metre, mes_temperature)
    SELECT CURRENT_DATE, imp_demi_metre, imp_temperature
    FROM importation
    ORDER BY imp_demi_metre
    tracer l'évolution de la température a 150 m de profondeur par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT mes_date, mes_temprature
    FROM mesure
    WHERE mes_demi_metre = 150
    ORDER BY mes_date
    Même avec des millions de lignes, ça ne devrait prendre au plus que quelques secondes et probablement moins.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2011, 11h53
  2. Réponses: 7
    Dernier message: 11/07/2007, 13h26
  3. créer une table avec interbase
    Par solidleon dans le forum Bases de données
    Réponses: 3
    Dernier message: 01/11/2006, 15h39
  4. [Conception] Créer une table avec php
    Par freezerhm dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/10/2006, 12h15
  5. Créer une table avec SELECT
    Par eric37 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/08/2006, 00h34

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