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

PostgreSQL เวอร์ชั่น 9.4

1
ข้อ จำกัด ที่ไม่ซ้ำกับช่วงวันที่
พิจารณาpricesตารางที่มีคอลัมน์เหล่านี้: id integer primary key product_id integer -- foreign key start_date date not null end_date date not null quantity integer price numeric ฉันต้องการให้ฐานข้อมูลบังคับใช้กฎว่าผลิตภัณฑ์หนึ่ง ๆ สามารถมีราคาหนึ่งรายการในปริมาณเฉพาะในช่วงวันที่ (ผ่านwhere <date> BETWEEN start_date AND end_date) ข้อ จำกัด ประเภทนี้เป็นไปได้หรือไม่

2
ฐานข้อมูล“ ตรึง” บน ALTER TABLE
สภาพแวดล้อมการผลิตของเราเพิ่งแข็ง * เช้านี้สักพักเมื่อเปลี่ยนโต๊ะเพิ่มคอลัมน์จริง การละเมิด SQL:ALTER TABLE cliente ADD COLUMN topicos character varying(20)[]; * การเข้าสู่ระบบของเราต้องเลือกจากตารางเดียวกันนั้นดังนั้นจึงไม่มีใครสามารถเข้าสู่ระบบในช่วงตารางการเปลี่ยนแปลง เราต้องฆ่ากระบวนการเพื่อให้ระบบกลับมาทำงานตามปกติ โครงสร้างตาราง: CREATE TABLE cliente ( rut character varying(30) NOT NULL, nombre character varying(150) NOT NULL, razon_social character varying(150) NOT NULL, direccion character varying(200) NOT NULL, comuna character varying(100) NOT NULL, ciudad character varying(100) NOT NULL, …

1
มีวิธีแทรกหลายแถวในตารางที่มีค่าเริ่มต้นสำหรับคอลัมน์ทั้งหมดหรือไม่
ฉันสามารถแทรกหลายแถวลงในตารางที่มีค่าเริ่มต้นสำหรับคอลัมน์ทั้งหมดด้วยวิธีRBAR : create table course(course_id serial primary key); do $$ begin for i in 1..100000 loop insert into course default values; end loop; end;$$; มีวิธีการทำเช่นเดียวกันกับคำสั่ง SQL เดียวหรือไม่

5
จะตรวจสอบใบรับรอง SSL ของเซิร์ฟเวอร์ PostgreSQL ได้อย่างไร
สมมติว่ามีเซิร์ฟเวอร์ PostgreSQL ทำงานอยู่และเปิดใช้งาน SSL แล้ว การใช้เครื่องมือ "มาตรฐาน" Linux และ PostgreSQL ฉันจะตรวจสอบใบรับรอง SSL ได้อย่างไร openssl x509 -text ...ฉันหวังสำหรับการส่งออกคล้ายกับสิ่งที่คุณจะได้รับจากการทำงาน และฉันหวังว่าจะได้รับคำตอบจากบรรทัดคำสั่งหนึ่งหรือสองซับดังนั้นฉันไม่ต้องหันไปใช้แพ็คเก็ตดมกลิ่น ฉันไม่สามารถเข้าถึงเซิร์ฟเวอร์ PostgreSQL ดังนั้นฉันจึงไม่สามารถดูไฟล์การกำหนดค่าได้โดยตรง ฉันไม่ได้ลงชื่อเข้าใช้ superuser ดังนั้นฉันจึงไม่สามารถรับค่าของการssl_cert_fileตั้งค่าpg_read_fileได้ การใช้openssl s_client -connect ...ไม่ทำงานเนื่องจาก PostgreSQL ดูเหมือนจะไม่ต้องการจับมือ SSL ทันที จากการดูpsqlเอกสารอย่างรวดเร็วฉันไม่สามารถหาพารามิเตอร์บรรทัดคำสั่งที่ทำให้มันแสดงข้อมูลเมื่อเริ่มต้น (แม้ว่ามันจะแสดงข้อมูลตัวเลขบางอย่างให้ฉัน)

1
รับเปอร์เซ็นไทล์ที่ 10 และ 90 จากลูกค้า
ฉันมีตารางที่มีลูกค้าและคะแนน (ขึ้นอยู่กับปัจจัยต่าง ๆ ที่ไม่เกี่ยวข้องในกรณีนี้ลูกค้าสามารถมีหลายคะแนน) ซึ่งมีลักษณะดังนี้: customer_id | score | score_giver_id ==================================== 1 | 100 | 1 1 | 102 | 1 1 | 101 | 1 1 | 140 | 1 2 | 131 | 3 1 | 44 | 1 3 | 223 | 1 3 | 1 | …

3
วิธีที่เร็วที่สุดในการนับจำนวนช่วงวันที่ครอบคลุมแต่ละวันจากซีรี่ส์
ฉันมีตาราง (ใน PostgreSQL 9.4) ที่มีลักษณะเช่นนี้: CREATE TABLE dates_ranges (kind int, start_date date, end_date date); INSERT INTO dates_ranges VALUES (1, '2018-01-01', '2018-01-31'), (1, '2018-01-01', '2018-01-05'), (1, '2018-01-03', '2018-01-06'), (2, '2018-01-01', '2018-01-01'), (2, '2018-01-01', '2018-01-02'), (3, '2018-01-02', '2018-01-08'), (3, '2018-01-05', '2018-01-10'); ตอนนี้ฉันต้องการคำนวณสำหรับวันที่ที่กำหนดและสำหรับทุกประเภทว่ามีกี่แถวจากdates_rangesแต่ละวันที่ตก อาจตัดศูนย์ได้ ผลลัพธ์ที่ต้องการ: +-------+------------+----+ | kind | as_of_date | n | …

2
ฟังก์ชันเดียวกันใน SELECT และ WHERE clause
คำถามเริ่มต้น: ฉันมีฟังก์ชั่นราคาแพงf(x, y)สองคอลัมน์ x และ y ในตารางฐานข้อมูลของฉัน ฉันต้องการที่จะดำเนินการค้นหาที่ให้ผลลัพธ์ของฟังก์ชั่นเป็นคอลัมน์และทำให้ข้อ จำกัด ในสิ่งที่ชอบ SELECT *, f(x, y) AS func FROM table_name WHERE func < 10; อย่างไรก็ตามสิ่งนี้ไม่ได้ผลดังนั้นฉันจะต้องเขียนบางอย่างเช่น SELECT *, f(x, y) AS func FROM table_name WHERE f(x, y) < 10; สิ่งนี้จะเรียกใช้ฟังก์ชั่นราคาแพงสองครั้งหรือไม่ วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?

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
PostgreSQL: ข้อผิดพลาด SSL SYSCALL: ตรวจพบ EOF
ก่อนอื่นฉันค้นหาและพบหลายกระทู้ที่เกี่ยวข้องกับข้อผิดพลาดนี้และส่วนใหญ่ชี้ไปที่ปัญหา RAM หรือปัญหา SSL ฉันพยายามเอาชนะความเป็นไปได้ SSL โดยการเพิ่ม sslmode = ปิดใช้งานในบรรทัดคำสั่ง: psql -U waypoint -d waypoint -W -c "alter table telemetria_data.historico alter clase type smallint, alter valor type real[], alter power type smallint, alter voltaje type real;" -h localhost -v sslmode=disable แต่ข้อความเดียวกันปรากฏ: SSL SYSCALL error: EOF detected connection to server was …

1
ทำไมดัชนีจินในคอลัมน์ jsonb ทำให้ข้อความค้นหาของฉันช้าลงและฉันจะทำอย่างไรได้บ้าง
เตรียมข้อมูลการทดสอบ: CREATE EXTENSION IF NOT EXISTS pgcrypto; CREATE TABLE docs (data JSONB NOT NULL DEFAULT '{}'); -- generate 200k documents, ~half with type: "type1" and another half with type: "type2", unique incremented index and random uuid per each row INSERT INTO docs (data) SELECT json_build_object('id', gen_random_uuid(), 'type', (CASE WHEN random() …

1
pgAdmin ช้ามากในการดำเนินการทางไกล
ฉันเรียกใช้แบบสอบถามนี้จาก pgAdmin ท้องถิ่นของฉันเชื่อมต่อจากระยะไกลไปยังเซิร์ฟเวอร์ dev ของเรา: select * from users order by random() limit 1; แฮงค์เป็นเวลา17วินาทีและแสดงให้เห็น Total query runtime: 148 ms. 1 row retrieved. มันยังค้างอยู่บนการดำเนินการใด ๆ แม้แต่คลิกขวาบนโต๊ะ Afterwise ฉันเชื่อมต่อผ่าน RDP และเรียกใช้แบบสอบถามเดียวกันมีในรุ่น pgAdmin query time: 32 msเดียวกันซึ่งแสดงผลทันทีด้วย จากนั้นฉันเรียกใช้แบบสอบถามจาก pgAdmin ท้องถิ่นของฉันอีกครั้ง: Total query runtime: 337 ms. 1 row retrieved. ฉันมี ping 130 ms …

1
วิธีใช้ดัชนีเพื่อเพิ่มความเร็วในการเรียงลำดับใน postgres
ฉันใช้ postgres 9.4 The messagesมีสคีมาดังต่อไปนี้: ข้อความเป็นของ feed_id และโพสต์ _at และข้อความสามารถมีข้อความหลัก (ในกรณีที่ตอบกลับ) Table "public.messages" Column | Type | Modifiers ------------------------------+-----------------------------+----------- message_id | character varying(255) | not null feed_id | integer | parent_id | character varying(255) | posted_at | timestamp without time zone | share_count | integer | Indexes: "messages_pkey" PRIMARY KEY, …

2
Amazon RDS Postgresql เพิ่มส่วนขยายใหม่
ฉันต้องการดาวน์โหลดอินสแตนซ์jsonbxไปยัง RDS คุณสมบัติ RDS PostgreSQL รองรับการแสดงคุณสมบัติในตัวเท่านั้น นี่หมายความว่าไม่มีทางที่เราจะสามารถติดตั้งส่วนขยายไปยัง RDS ซึ่งไม่ได้อยู่ในฟีเจอร์เมทริกซ์ ? มีวิธีแก้ไขไหมสำหรับเรื่องนี้?

1
วิธีเรียกคืนพื้นที่ที่ใช้โดยดัชนีที่สร้างขึ้นบางส่วนและถูกยกเลิกโดยไฟฟ้าดับ
ฉันใช้ postgres (postgis) 9.4.2 บน mac (10.10.4) ฉันมีตารางใหญ่สองสามอัน (หลาย TB) ในระหว่างการสร้างดัชนีของหนึ่งในนั้นที่ใช้เวลาประมาณหนึ่งสัปดาห์ฉันดูการลดลงของพื้นที่ HD ที่มีอยู่ตามที่คุณคาดว่าจะถึงจุดที่ดัชนีจะเสร็จสิ้นเมื่อไฟฟ้าดับนานกว่าแบตเตอรี่และระบบ ลงไป. ฉันปิดบัฟเฟอร์และfillfactor=100ระหว่างการสร้างเนื่องจากเป็นแหล่งข้อมูลแบบคงที่ ในการรีบู๊ตพื้นที่ที่เหลืออยู่บนไดรฟ์จะอยู่ในตำแหน่งที่ใกล้ถึงจุดสิ้นสุดของการสร้างดัชนี การวิเคราะห์สูญญากาศไม่เพิ่มพื้นที่ว่าง ฉันลองวางโต๊ะแล้วนำเข้าไปใหม่และนั่นก็ไม่ได้ทำให้เนื้อที่ลดลง ตอนนี้ฉันอยู่ในสถานที่ที่ฉันมีพื้นที่ไม่เพียงพอที่จะสร้างดัชนี ไฟล์ถูกสร้างขึ้นในระหว่างการสร้างดัชนีติดอยู่ในบริเวณขอบรกบางส่วนที่ไม่สามารถลบออกได้โดยระบบเนื่องจากวิธีการที่เครื่องหยุดทำงานในระหว่างไฟฟ้าดับหรือไม่? เมื่อฉันมองไปที่ตารางขนาด + ดัชนีในฐานข้อมูล (ซึ่งเป็นเพียงข้อมูลในไดรฟ์นั้น) พวกเขาเพิ่มขึ้นประมาณ6TB ไดรฟ์คือ8TBและเหลือน้อยกว่า500GBบนไดรฟ์ดังนั้นดูเหมือนว่าจะมีประมาณ 1.5TB ที่หายไปที่ไหนสักแห่งซึ่งมีขนาดเท่ากับดัชนีที่น่าจะเป็น ความคิดใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.