$do$
ฉันกำลังนำเข้าเป็นจำนวนมากของไฟล์ขนาดใหญ่เป็นจำนวนของตารางการแบ่งพาร์ติชันโดยใช้ลูปภายในการป้องกันรหัส plpgsql ที่ไม่ระบุชื่อ
$do$
BEGIN
FOR yyyy in 2012..2016 THEN
EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$;
END LOOP;
END;
$do$ LANGUAGE plpgsql
กระบวนการทั้งหมดนี้ควรใช้เวลาประมาณ 15 ชั่วโมงและฉันหวังว่าการนำเข้าทั้งหมดจะไม่ถูกย้อนกลับหากมีข้อผิดพลาดในการนำเข้าในบางจุด
IIRC COMMIT
ไม่ทำงานภายในฟังก์ชั่นที่จัดเก็บ bc ฟังก์ชั่นทั้งหมดจะถือว่าเป็นธุรกรรมเดียว
บล็อกโค้ดจะได้รับการปฏิบัติเสมือนเป็นส่วนหนึ่งของฟังก์ชันที่ไม่มีพารามิเตอร์ส่งคืนโมฆะ มันถูกแยกวิเคราะห์และดำเนินการในครั้งเดียว
ฉันสมมติว่านี่หมายความว่าทั้งหมด$do$
เป็นธุรกรรมเดียวดังนั้นการกระทำภายในบล็อกจะไม่ทำงาน ฉันถูกไหม?
BEGIN
หรือCOMMIT
ในร่างกายของฟังก์ชั่น คุณจะได้รับข้อยกเว้นเนื่องจากไม่อนุญาต (ไม่สามารถทำได้)