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

Développement de jobs Discussion :

migration de séquences postgres


Sujet :

Développement de jobs

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 36
    Points : 31
    Points
    31
    Par défaut migration de séquences postgres
    Bonjour à tous,

    J'ai réalisé une série de jobs qui réalisent la migration (et transformation) de tables postgres d'une instance vers une autre instance disposant d'un schéma de base différent.
    Le script fonctionne parfaitement.

    Le "hic" est que la plupart de mes tables utilise des auto-incréments comme clé primaires. Auto-incréments gérés par des séquences.
    Du coup, il faut également que je migre l'état courant de ces séquences dans la nouvelle base sinon, les futurs inserts dans ces tables reprendront à 1 ce qui va créer des conflits lors des inserts.

    Je cherche donc à migrer ces séquences. Pour cela, il faut que je récupère la valeur courante pour chaque séquence dans la base source et que j'update cette valeur courante dans la base cible.
    Une idée de la solution ?

    Merci par avance pour votre aide.

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 36
    Points : 31
    Points
    31
    Par défaut
    Je me répond à moi même.
    En fait, au lieu d'essayer de récupérer la valeur des séquences dans la base source, j'ai plutôt positionné la valeur courante des séquences en prenant la plus grande valeur des id dans les tables.

    Pour ce faire, j'ai utilisé le job suivant :

    Nom : jobsequence.JPG
Affichages : 190
Taille : 49,2 Ko

    Dans mon tPostgresInput, j'exécute la requête suivante :

    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
    "SELECT 'SELECT SETVAL(' ||
           quote_literal(quote_ident(PGT.schemaname) || '.' || quote_ident(S.relname)) ||
           ', COALESCE(MAX(' ||quote_ident(C.attname)|| '), 1) ) FROM ' ||
           quote_ident(PGT.schemaname)|| '.'||quote_ident(T.relname)|| ';' as querysequence
    FROM pg_class AS S,
         pg_depend AS D,
         pg_class AS T,
         pg_attribute AS C,
         pg_tables AS PGT
    WHERE S.relkind = 'S'
        AND S.oid = D.objid
        AND D.refobjid = T.oid
        AND D.refobjid = C.attrelid
        AND D.refobjsubid = C.attnum
        AND T.relname = PGT.tablename
    ORDER BY S.relname;"
    Elle permet de créer des requetes qui vont positionner la valeur de chaque séquence à la valeur max pour chaque id auto-incrément.

    Ensuite, j'utilise un tFlowIterate pour positionner une variable globale qui va contenir la requête à exécuter.
    Enfin, j'utilise un tPostgresFlow qui dans la query va juste contenir "(String)globalMap.get("querysequence")"

    Le job va donc itérer sur chaque requête créée et l'exécuter. Et ainsi, mes valeurs de séquences seront mises à jour avec la bonne valeur.
    Attention : Cette méthode ne fonctionne que pour les séquences qui sont rattachées à une table.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2.x] Problème de séquence postgres et symfony2
    Par zamti dans le forum Symfony
    Réponses: 1
    Dernier message: 20/07/2015, 16h15
  2. Afficher commentaire séquence postgres
    Par ginger4957 dans le forum Requêtes
    Réponses: 18
    Dernier message: 18/11/2011, 16h20
  3. Migration MSSQL vers PostGre
    Par bouliouf dans le forum Installation, migration et administration
    Réponses: 5
    Dernier message: 29/08/2011, 13h06
  4. MIgration Sql Server -> Postgres
    Par Eylir dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 01/04/2008, 14h33
  5. migration de base access vers postgres
    Par greg_ggl dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 09/03/2006, 11h33

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