Re: traitement par lots et sequence

From: Marc Cousin <cousinmarc(at)gmail(dot)com>
To: pgsql-fr-generale(at)lists(dot)postgresql(dot)org
Subject: Re: traitement par lots et sequence
Date: 2019-06-12 11:58:09
Message-ID: 61cbf657-73e8-e309-76a0-5809834453dd@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

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), payload int);

with insert_tmere as (insert into t_mere (payload) values (1),(2) returning *),
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=num);

À vous de générer les listes de values... Si vous récupérez des json ou xml ou des choses comme ça, vous pouvez même certainement
passer le json dans un premier CTE, l'éclater à coup de json_each ou équivalent, plutôt que de devoir fabriquer
les listes de values vous même.

On 12/06/2019 11:36, CRUMEYROLLE Pierre wrote:
>
> structure en arbre
> recuperation par position dans la liste
> je suis preneur d'idée je dois pas être le seul a faire du traitement par lots sur des tables liées par des FK
> merci A+
>
> Marc Cousin <cousinmarc(at)gmail(dot)com> a écrit :
>
>> 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','bb'),(3,'c','cc') RETURNING listedata)
>>> 1 a aa  -- valeurs retournées
>>> 2 b bb
>>> 3 c cc
>>> ...
>>>
>>> j'ai un peu de mal a comprendre comment j’insère les listedata.a dans un etable t_fille
>>
>> La difficulté est de savoir comment vous allez raccrocher vos enregistrements à leur parent avec cette méthode
>>
>> J'imagine qu'initialement, vous aviez une structure hiérarchique ? Dans quel format ?
>>
>>
>> Dans l'algorithme de départ, vous positionnez vous-même les id de la mère. Mais si les ids sont autogénérés, comment les récupéreriez vous pour les insertions dans les tables filles ? par leur position dans la liste ?
>
>
>
>

In response to

Responses

Browse pgsql-fr-generale by date

  From Date Subject
Next Message CRUMEYROLLE Pierre 2019-06-12 12:18:25 Re: traitement par lots et sequence
Previous Message Emmanuel BEZAGU 2019-06-12 11:20:18 Re: traitement par lots et sequence