Re: traitement par lots et sequence

From: CRUMEYROLLE Pierre <pierre(dot)crumeyrolle(at)c-s(dot)fr>
To: pgsql-fr-generale(at)lists(dot)postgresql(dot)org
Subject: Re: traitement par lots et sequence
Date: 2019-06-12 12:23:14
Message-ID: 20190612142314.Horde.WMVp0KL68xzScIz1oLs6Jw9@messagerie.c-s.fr
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-fr-generale

Ok
c'est pas mal mais j'ai cru comprendre que sur des grosses volumétries
, méfiance au cte

=>
https://medium.com/@hakibenita/be-careful-with-cte-in-postgresql-fca5e24d2119

Marc Cousin <cousinmarc(at)gmail(dot)com> a écrit :

> 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

Browse pgsql-fr-generale by date

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