Re: traitement par lots et sequence

From: Anthony Nowocien <anowocien(at)gmail(dot)com>
To: CRUMEYROLLE Pierre <pierre(dot)crumeyrolle(at)c-s(dot)fr>
Cc: "pgsql-fr-generale(at)postgresql(dot)org" <pgsql-fr-generale(at)postgresql(dot)org>
Subject: Re: traitement par lots et sequence
Date: 2019-06-11 14:46:59
Message-ID: CAH5RRoPrfcvmeCBDfLU3D=5=mQUTWbSoDWZVikCDEkJV6Sgeyg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Bonjour Pierre,

Peux-tu utiliser la clause RETURNING de l'INSERT?

Exemple :
INSERT INTO t(a,b,c) VALUES (1,'a','aa') RETURNING a;

WITH ins_t_mere AS(INSERT INTO t(a,b,c) VALUES (1,'a','aa') RETURNING a)
INSERT INTO t_fille SELECT a, 'b', 'bb') FROM ins_t_mere;

Voir https://www.postgresql.org/docs/current/sql-insert.html

Dans la partie VALUE, tu pourras peut-être aussi utiliser DEFAULT pour ta
colonne d'ID.

Anthony

On Tuesday, June 11, 2019, CRUMEYROLLE Pierre <pierre(dot)crumeyrolle(at)c-s(dot)fr>
wrote:
> bonjour
>
> probléme :
>
> soit 2 tables : T_meres et T_filles liées par T_meres.idMere
>
> je veux faire du traitement par lots pour avoir des performances car gros
volumes
>
> donc insertion par lots des T_meres sous la forme suivante
>
> insert into T_meres idMere,datamere values
((1,datam1),(2,datam2),(3,datam3), .... (n,datamn));
>
> idem insertion par lots des T_filles sous la forme suivante
>
> **** les n filles de la mére 1 *****
>
> insert into T_filles idFils,idMere,datamere values
((1,1,dataf1),(1,1,dataf2),(1,1,dataf3), .... (n,1,datafn));
> insert into T_filles idFils,idMere,datamere values
((2,1,dataf1),(2,1,dataf2),(2,2,dataf3), .... (2,1,datafn));
> .......
> insert into T_filles idFils,idMere,datamere values
((n,1,dataf1),(n,1,dataf2),(3,1,dataf3), .... (n,1,datafn));
>
> **** les n filles de la mére 2 *****
>
> insert into T_filles idFils,idmere,datamere values
((1,2,dataf1),(2,2,dataf2),(3,2,dataf3), .... (n,2,datafn));
> insert into T_filles idFils,idmere,datamere values
((1,2,dataf1),(2,2,dataf2),(3,2,dataf3), .... (n,2,datafn));
> .......
> insert into T_filles idFils,idmere,datamere values
((1,2,dataf1),(2,n,dataf2),(3,n,dataf3), .... (n,n,datafn));
>
> etc ....
>
> Ma question :
> Comment recuperer ou provisionner la plage de sequence balayé dans
l'insert des méres pour l'utiliser dans l'insert des filles dans un
traitement par lots de façon la plus éfficace ?
>
> merci pour toute idée
>
>
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message CRUMEYROLLE Pierre 2019-06-11 17:50:48 Re: traitement par lots et sequence
Previous Message CRUMEYROLLE Pierre 2019-06-11 13:04:31 traitement par lots et sequence