Re: traitement par lots et sequence
Marc Cousin <[email protected]> Wed, 12 Jun 2019 13:58:09 +0200
| Newsgroups | gmane.comp.db.postgresql.french |
|---|---|
| Message-ID | <[email protected]> |
This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --bydaGHPkw6NGq6NgDjRb4Kcabm1PhwauK Content-Type: multipart/mixed; boundary="6H8vA6cy3ovClrTNGunnqaqAzTMsQOJ5i"; protected-headers="v1" From: Marc Cousin <[email protected]> To: [email protected] Message-ID: <[email protected]> Subject: Re: traitement par lots et sequence References: <[email protected]> <CAH5RRoPrfcvmeCBDfLU3D=5=mQUTWbSoDWZVikCDEkJV6Sgeyg@mail.gmail.com> <[email protected]> <[email protected]> <[email protected]> <[email protected]> In-Reply-To: <[email protected]> --6H8vA6cy3ovClrTNGunnqaqAzTMsQOJ5i Content-Type: text/plain; charset=utf-8 Content-Language: en-US-large Content-Transfer-Encoding: quoted-printable 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), paylo= ad int); with insert_tmere as (insert into t_mere (payload) values (1),(2) returni= ng *), 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 (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 ou 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 =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: >=20 > 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 tr= aitement par lots sur des tables li=C3=A9es par des FK > merci A+ >=20 > Marc Cousin <[email protected]> a =C3=A9crit=C2=A0: >=20 >> 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 (1,'a','aa'),(2,'b','b= b'),(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 lis= tedata.a dans un etable t_fille >> >> La difficult=C3=A9 est de savoir comment vous allez raccrocher vos enr= egistrements =C3=A0 leur parent avec cette m=C3=A9thode >> >> J'imagine qu'initialement, vous aviez une structure hi=C3=A9rarchique = ? Dans quel format ? >> >> >> Dans l'algorithme de d=C3=A9part, vous positionnez vous-m=C3=AAme les = id de la m=C3=A8re. Mais si les ids sont autog=C3=A9n=C3=A9r=C3=A9s, comm= ent les r=C3=A9cup=C3=A9reriez vous pour les insertions dans les tables f= illes ? par leur position dans la liste ? >=20 >=20 >=20 >=20 --6H8vA6cy3ovClrTNGunnqaqAzTMsQOJ5i-- --bydaGHPkw6NGq6NgDjRb4Kcabm1PhwauK Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEErRJFoqQ1WmHC5to09vfGVovAkJ8FAl0A6NEACgkQ9vfGVovA kJ/QXgf/RpLWneoo4WeCx/Y/UEm3WdyXwHqj1maDU8E0Ou+wEnbc+dxQgsT3jjEx 3HtFxwj2F5FXpu+QJxRM2NbNdS7Dh3RPWJOkk5JPKwYQBH6FJy/2IKYyovvs8XKY KwDJIBAl7Ub8Szhii6IHxIYlz3rXU/ksH+weqhz06MhdLU9WjrwaTDekVLZ3F9nG 4JjjNYQeCv+mq1Ujh2ZjveuXvfeLYhXT4BbZY/ynsoxI1e6SOGp7q/RuE6Frg1Ii PIqiHQ9LQkNuJH17xuWeQQp8zg0pSYNpRuFDHS3tcaBbe+ekCgd41p+xFoiGZXay gE9ekIMAuy+0dF0TxbLktYRQH98X2Q== =Odvo -----END PGP SIGNATURE----- --bydaGHPkw6NGq6NgDjRb4Kcabm1PhwauK--