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