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
>
>
>
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 |