Re: Bulk Update

From: M(dot)Atıf CEYLAN <mehmet(at)atifceylan(dot)com>
To: Fırat Güleç <firat(dot)gulec(at)hepsiexpress(dot)com>
Cc: pgsql-tr-genel <pgsql-tr-genel(at)postgresql(dot)org>
Subject: Re: Bulk Update
Date: 2017-09-29 20:58:16
Message-ID: CA+M9mDQksaEvCsGGtoGYLr76RrHPTW=z2QeFJrbRXVLW56HQoA@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

Hocam fonksiyon içinden transaction başlatıp sonlandıramıyorsunuz.
Fonksiyon ile bunu yapamazsınız.
p_record_cnt değişkeni ile limit değeri belirlediğinize göre fonksiyonu
uygulama tarafında total count / limit değeri kadar döngüleyerek
çağırıyorsunuz ve bunu yapmak yerine tüm işlemi aynı döngü içinde yapmak
istiyorsunuz.
Doğru mu?

29 Eylül 2017 10:03 tarihinde Fırat Güleç <firat(dot)gulec(at)hepsiexpress(dot)com>
yazdı:

> Merhabalar,
>
>
>
> Bir konuda yardımınız ihtiyacım var. Postgresql 9.5.8 versiyonunu
> kullanıyoruz. Bulk bir update yapmaya ihtiyacımız oldu, yaklaşık 4.5
> milyonluk bir kayıt. Oracle’da begin end’in arasına commit koyabiliyorduk.
> Fakat Postgresql’de bunu yapamadığımızı farkına vardık. 100 kayıt update
> ettikten sonra commit yapmak istiyoruz. Bu gibi ihtiyaçlar için
> Postgresql’de nasıl bir çözüm kullanıyorsunuz?
>
>
>
> İyi çalışmalar.
>
>
>
>
>
> Örnek kod:
>
>
> *DECLARE **c_delivery **RECORD*
> *; cur_rad CURSOR (**x_address_id **BIGINT**, **x_receiver_id **BIGINT**)
> FOR SELECT ****
> * FROM *
> *receiver_address*
> * WHERE *
> *receiver_id** = **x_receiver_id*
> *
> AND
> **address_id** = **x_address_id*
> *; **c_rad **RECORD*
>
> *;BEGIN FOR **c_delivery** IN SELECT ***** FROM **delivery** WHERE
> recipient_address_id is NULL LIMIT **p_record_cnt*
>
> * LOOP OPEN cur_rad(**c_delivery**.**receiver_address_id**,*
> *c_delivery**.**receiver_id*
> *); FETCH cur_rad INTO **c_rad*
> *; IF **c_rad*
>
> *.id IS NOT NULL THEN UPDATE *********** SET recipient_address_id
> = **c_rad**.id WHERE **id** = **c_delivery**.**id*
> *; UPDATE **************** SET recipient_address_id = **c_rad**.id
> WHERE **delivery_id** = **c_delivery**.**id*
>
>
>
> *; END IF; CLOSE cur_rad; END LOOP;END;*
>
>
>
>
>
> *FIRAT GÜLEÇ*
> Veritabanı Yöneticisi
> firat(dot)gulec(at)hepsiexpress(dot)com
>
>
>
> *M:* 0 532 210 57 18
> İnönü Mh. Mimar Sinan Cd. No:3 Güzeller Org.San.Bölg. GEBZE / KOCAELİ
> ------------------------------
>
> [image: Inline image 1]
>
>
>

In response to

  • Bulk Update at 2017-09-29 07:03:02 from Fırat Güleç

Browse pgsql-tr-genel by date

  From Date Subject
Next Message N. Can KIRIK 2017-09-29 21:25:49 Re: Bulk Update
Previous Message Fırat Güleç 2017-09-29 07:03:02 Bulk Update