คำถามติดแท็ก postgresql-9.5

โดยเฉพาะสำหรับ PostgreSQL เวอร์ชัน 9.5

1
ปฏิเสธการอนุญาตเพื่อสร้าง“ pg_catalog.tablename” ในระหว่าง pg_dump ที่กำหนดเป้าหมายเครื่องอื่น
ฉันพยายามที่จะถ่ายโอนข้อมูลบางตารางจาก 9.5 เบต้า 2 ไปยังเซิร์ฟเวอร์ 9.4.4 รูปแบบของคำสั่งที่ฉันใช้นั้นเป็นมาตรฐานที่ค่อนข้างดี: pg_dump -t table dbname | psql -h hostname -d dbname ฉันใช้ผู้ใช้ Postgres ซึ่งฉันรู้ว่าอาจไม่เหมาะ แต่เนื่องจากทั้งสองนี้เป็นกล่องประมวลผลข้อมูล dev ที่ฉันใช้เท่านั้นและเกี่ยวข้องกับข้อผิดพลาดที่ตามมา เริ่มแรกฉันได้รับข้อผิดพลาด ข้อผิดพลาด: พารามิเตอร์การกำหนดค่าที่ไม่รู้จัก "row_security" ซึ่งคาดว่าเป็นคุณลักษณะนี้ใหม่ใน 9.5 และใช่ฉันรู้ว่าไม่แนะนำให้ใช้ pg_dump ระหว่างรุ่น Postgres ที่แตกต่างกัน แต่หลีกเลี่ยงไม่ได้อย่างน่าเศร้าเนื่องจากฉันได้พบข้อผิดพลาดที่คลุมเครือมากและต้องย้ายขนาดใหญ่ จำนวนข้อมูลคงที่หนึ่งครั้ง ดังนั้นการใช้แฮ็คที่น่าเกลียดนี้เพื่อลบข้อผิดพลาด row_security และการหยุดข้อผิดพลาดครั้งแรก: pg_dump -t tablemame dbname |sed 's/SET row_security = off;//'| psql -v …

1
สถิติของดัชนีในพาร์ติชั่นที่ไม่ได้ใช้ในการสืบค้นบนตารางทั้งหมด
การเข้าร่วมต่อไปนี้มีการประมาณการแถวแตกต่างกันมากเมื่อทำการเข้าร่วมในพาร์ทิชันเทียบกับเมื่อเข้าร่วมในตารางทั้งหมด: CREATE TABLE m_data.ga_session ( session_id BIGINT NOT NULL, visitor_id BIGINT NOT NULL, transaction_id TEXT, timestamp TIMESTAMP WITH TIME ZONE NOT NULL, day_id INTEGER NOT NULL, [...] device_category TEXT NOT NULL, [...] operating_system TEXT ); สำหรับพาร์ติชันทั้งหมด: CREATE TABLE IF NOT EXISTS m_data.ga_session_20170127 ( CHECK (day_id = 20170127) ) INHERITS (m_data.ga_session); …

2
COMMIT ทำงานภายในฟังก์ชัน plgpsql แบบไม่ระบุชื่อใน PostgreSQL 9.5 หรือไม่
$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$ บล็อกโค้ดจะได้รับการปฏิบัติเสมือนเป็นส่วนหนึ่งของฟังก์ชันที่ไม่มีพารามิเตอร์ส่งคืนโมฆะ มันถูกแยกวิเคราะห์และดำเนินการในครั้งเดียว ฉันสมมติว่านี่หมายความว่าทั้งหมด$do$เป็นธุรกรรมเดียวดังนั้นการกระทำภายในบล็อกจะไม่ทำงาน ฉันถูกไหม?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.