Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/09/2011, 16h47   #1
Invité de passage
 
Inscription : mai 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3
Points : 0
Points : 0
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 :
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...
mouky66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 10h11   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/10/2011, 17h44   #3
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 958
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 958
Points : 17 789
Points : 17 789
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
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 12
Vieux 05/10/2011, 17h31   #4
Membre éprouvé
 
Homme
Ingénieur développement logiciels
Inscription : avril 2009
Messages : 501
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Sarthe (Pays de la Loire)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Service public

Informations forums :
Inscription : avril 2009
Messages : 501
Points : 490
Points : 490
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é.
oneagaindoguys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h09   #5
Invité de passage
 
Inscription : mai 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3
Points : 0
Points : 0
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
mouky66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h30   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
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 : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
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 ?

Citation:
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 !

Citation:
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...
Citation:
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...

Citation:
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 :
Citation:
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 :
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
Citation:
tracer l'évolution de la température a 150 m de profondeur par exemple
Code :
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 de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« 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 Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/10/2011, 10h50   #7
Invité de passage
 
Inscription : mai 2005
Messages : 3
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 3
Points : 0
Points : 0
Merci pour cette réponse constructive et sans citation d'Audiard

oui mon fichier à bien deux colonnes et pour différencier les trois puits en fait j'ai des repères: pour faire simple ma tout première mesure correspond au premier puits a 0 mètre de profondeur et porte l'indice -744.4 (c'est bizarre mais c'est pas moi qui gère cela) et la fin du dernier puit est = à 3689. Mais bon ça a la limite c'est pas un soucis pour le domaine du SQL...

Merci mille fois CinePhil pour ta réponse et encore désolé si j'ai fais offense à la programmation mais j'ai découvert MySQL le mois dernier...

Merci bcp
mouky66 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h57.


 
 
 
 
Partenaires

Hébergement Web