|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() |
Bonjour,
J'ai une grosse base de données postgres sur un même serveur, et pour simplifier le travail, je veux récupérer des différentes tables les données intéressantes (les colonnes). pour les regrouper dans 1 seule table. J'ai procédé ainsi : CREATE TYPE essai AS (user_id varchar, username varchar, First_Names varchar, Last_name varchar, company_id varchar, company_name varchar, rate varchar, project_id varchar, project_name varchar); CREATE OR REPLACE FUNCTION transform_table() RETURNS SETOF essai AS $BODY$ DECLARE rec record; o essai; BEGIN FOR rec IN SELECT user_id FROM acs_users_all GROUP BY user_id ORDER BY user_id FOR rec IN SELECT company_id FROM companies LOOP o.user_id:=rec.user_id; SELECT* INTO o.username, o.First_Names, o.Last_name FROM acs_users_all WHERE user_id = rec.user_id; SELECT* INTO o.company_name FROM companies WHERE company_id = rec.company_id; o.project_id:=rec.project_id; SELECT*INTO o.project_name FROM projects WHERE project_id = rec.project_id; o.user_id:=rec.user_id; SELECT *INTO o.rate FROM TABLE_java WHERE user_id = rec.user_id; RETURN NEXT o; END LOOP; RETURN ; end; $BODY$ LANGUAGE 'plpgsql' ; mes message d'erreur sont : ERROR: record "rec" is not assigned yet DETAIL: The tuple structure of a not-yet-assigned record is indeterminate. CONTEXT: PL/pgSQL function "transform_table" line 5 at for over select rows Je ne pense pas que ce soit une très bonne methode ? est ce que je dois utiliser dblink? Merci |
|
|
00
|
|
|
#2 | ||
|
Membre chevronné
![]() Inscription : octobre 2003 Messages : 668 ![]() |
Citation:
J'ai un peu de mal à voir ce que tu veux obtenir comme données, mais il y a déjà des erreurs de syntaxe : -Après le premier FOR, il n'y a pas de LOOP, ni de END LOOP correspondant. - la variable 'rec' est utilisée 2 fois (premier et 2eme for), hors, ensuite, tu fais référence soit au premier, soit au deuxième. -je ne suis pas sur que "o.user_id:=rec.user_id;" soit uen syntaxe très correcte (pas de création de "l'object" o à priori) - tu gagenrais à faire un select * into o + l'ensemble de test données (1 seule select + jointures pour récupérer toues tes données et ttes tes lignes en 1 seule fois) Si tu veux un peu plus d'aide, indique les 'create tables' stp Citation:
++
__________________
Two beer or not two beer. (Shakesbeer) Question technique par MP => poubelle! |
||
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() |
J'ai compris mon erreur, c'est pratiquement impossible de créer une nouvelle table dans ma base de données regroupant des données de différentes tables(que j'appelle base1).
C'est pour cette raison que j'ai créer une autre base(base2), que je connecte à la première (base1) avec Jitterbit. Je crois que je me suis compliquée la vie avec le petit programme ci dessous. Merci de m'avoir répondu. A bientot |
|
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : septembre 2006 Messages : 25 ![]() |
Salut,
j'ai exactement le meme problème que toi. Ca m'aiderait vraiment de savoir comment tu as procédé pour le résoudre. Merci d'avance. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() |
j'ai téléchargé jitterbit (il est gratuit). Jitterbit est un soft qui permet de récupérer les données d'un base 1 et de la transférer dans une base 2.
Pour conmmencer, j'ai créer un base de donnée 2. J 'ai télécharger jiiterbit et mis en place, je connecte jitterbit à mes serveur. Et je rentre le fichier source (baseA) puis le fichier targuet(base B) (comme il est appelé sur jitterbit), et je fait une nouvelle transformation. Dans la transformation, je relie ma base A à ma base B, en glissant les données d'une fenetre à une autre. Ensuite une operation. Je teste l'opération, et ensuite je load les tables. Et c'est fini. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com