Re: traitement par lots et sequence

CRUMEYROLLE Pierre <[email protected]> Wed, 12 Jun 2019 14:23:14 +0200
Newsgroups gmane.comp.db.postgresql.french
Message-ID <[email protected]>
Ok
c'est pas mal mais j'ai cru comprendre que sur des grosses volum=C3=A9tries=
=20=20
,=20m=C3=A9fiance au cte

=3D>=20=20
https://medium.com/@hakibenita/be-careful-with-cte-in-postgresql-fca5e24d21=
19

Marc=20Cousin <[email protected]> a =C3=A9crit=C2=A0:

> Un truc de ce genre devrait pouvoir le faire...
>
> create table t_mere (id serial primary key, payload int);
> create table t_fille (id serial, id_mere int references t_mere(id),=20=20
>=20payload int);
>
>
> with insert_tmere as (insert into t_mere (payload) values (1),(2)=20=20
>=20returning *),
> number_tmere as (select row_number() over () as num,* from insert_tmere)
> insert into t_fille (id_mere, payload)
> select number_tmere.id,v.payload from (values=20=20
>=20(1,3),(1,5),(2,2),(2,6)) as v(pos_mere,payload)
> join number_tmere on (pos_mere=3Dnum);
>
>
> =C3=80 vous de g=C3=A9n=C3=A9rer les listes de values... Si vous r=C3=A9c=
up=C3=A9rez des json=20=20
>=20ou xml ou des choses comme =C3=A7a, vous pouvez m=C3=AAme certainement
> passer le json dans un premier CTE, l'=C3=A9clater =C3=A0 coup de json_ea=
ch ou=20=20
>=20=C3=A9quivalent, plut=C3=B4t que de devoir fabriquer
> les listes de values vous m=C3=AAme.
>
>
> On 12/06/2019 11:36, CRUMEYROLLE Pierre wrote:
>>
>> structure en arbre
>> recuperation par position dans la liste
>> je suis preneur d'id=C3=A9e je dois pas =C3=AAtre le seul a faire du=20=
=20
>>=20traitement par lots sur des tables li=C3=A9es par des FK
>> merci A+
>>
>> Marc Cousin <[email protected]> a =C3=A9crit=C2=A0:
>>
>>> On 11/06/2019 23:04, CRUMEYROLLE Pierre wrote:
>>>> ok si je fais un traitement par lot ( 3 lignes par exemple)
>>>>
>>>> WITH ins_t_mere AS(INSERT INTO t(a,b,c) VALUES=20=20
>>>>=20(1,'a','aa'),(2,'b','bb'),(3,'c','cc') RETURNING listedata)
>>>> 1 a aa=C2=A0 -- valeurs retourn=C3=A9es
>>>> 2 b bb
>>>> 3 c cc
>>>> ...
>>>>
>>>> j'ai un peu de mal a comprendre comment j=E2=80=99ins=C3=A8re les list=
edata.a=20=20
>>>>=20dans un etable t_fille
>>>
>>> La difficult=C3=A9 est de savoir comment vous allez raccrocher vos=20=
=20
>>>=20enregistrements =C3=A0 leur parent avec cette m=C3=A9thode
>>>
>>> J'imagine qu'initialement, vous aviez une structure hi=C3=A9rarchique ?=
=20=20
>>>=20Dans quel format ?
>>>
>>>
>>> Dans l'algorithme de d=C3=A9part, vous positionnez vous-m=C3=AAme les i=
d de=20=20
>>>=20la m=C3=A8re. Mais si les ids sont autog=C3=A9n=C3=A9r=C3=A9s, commen=
t les=20=20
>>>=20r=C3=A9cup=C3=A9reriez vous pour les insertions dans les tables fille=
s ? par=20=20
>>>=20leur position dans la liste ?
>>
>>
>>
>>