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

PostgreSQL Discussion :

comment créer une nouvelle table à partir de différentes tables existante?


Sujet :

PostgreSQL

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut comment créer une nouvelle table à partir de différentes tables existante?
    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

  2. #2
    Membre éclairé Avatar de Spoutnik
    Homme Profil pro
    Inscrit en
    Octobre 2003
    Messages
    672
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 672
    Points : 781
    Points
    781
    Par défaut
    Citation Envoyé par filomena
    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.
    Ce que tu décris est une vue. A moins que tu n'ai vraiment besoin de travailler sur une copie des donnée.
    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 Envoyé par filomena
    est ce que je dois utiliser dblink?
    Merci
    DBlinbk est, il me semble, fait pour faire des requetes entre des bases de données différentes, ce qui ne semble pas être ton cas.

    ++
    Two beer or not two beer. (Shakesbeer)
    Question technique par MP => poubelle!

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut merci
    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

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 25
    Points : 11
    Points
    11
    Par défaut
    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.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    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.

Discussions similaires

  1. Réponses: 5
    Dernier message: 19/02/2014, 11h43
  2. Réponses: 16
    Dernier message: 09/10/2006, 10h12
  3. Réponses: 1
    Dernier message: 13/06/2006, 09h23
  4. Comment créer une nouvelle fenetre pour recherche
    Par RaimS dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/06/2006, 16h02

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