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

PostgreSQL ทุกรุ่น เพิ่มแท็กเฉพาะรุ่นเพิ่มเติมเช่น postgresql-11 หากบริบทนั้นสำคัญ

2
PostgreSQL เข้าร่วมโดยใช้ JSONB
ฉันมี SQL นี้: CREATE TABLE test(id SERIAL PRIMARY KEY, data JSONB); INSERT INTO test(data) VALUES ('{"parent":null,"children":[2,3]}'), ('{"parent":1, "children":[4,5]}'), ('{"parent":1, "children":[]}'), ('{"parent":2, "children":[]}'), ('{"parent":2, "children":[]}'); ที่จะให้: id | data ----+-------------------------------------- 1 | {"parent": null, "children": [2, 3]} 2 | {"parent": 1, "children": [4, 5]} 3 | {"parent": 1, "children": []} 4 …

1
ความแตกต่างระหว่างสารเติมเต็มตารางและสารเติมดัชนี
ใน Postgres หนึ่งสามารถตั้งค่า fillfactor สำหรับดัชนีเช่นเดียวกับตาราง อะไรคือความแตกต่าง? วิธีการตัดสินใจค่าสำหรับทั้ง อะไรคือสิ่งที่ usecases? ฉันกำลังพยายามจัดกลุ่มความสัมพันธ์เชิงพื้นที่กับดัชนีเชิงพื้นที่ มันมีสองสามล้านบันทึก ระเบียนจะอัปเดตตลอดเวลาแม้ว่าจะมีการสร้างใหม่น้อยมากทุกวัน กรณีการใช้งานเป็นแบบสอบถามช่วงเชิงพื้นที่ สิ่งที่จะเป็นค่าที่ดีสำหรับสารตัวเติมตารางและ / หรือสารตัวเติมดัชนี
16 postgresql 

2
มีวิธีง่ายๆใน PL / pgSQL เพื่อตรวจสอบว่าแบบสอบถามไม่ส่งคืนผลลัพธ์หรือไม่?
ฉันกำลังทดลองกับ PL / pgSQL เล็กน้อยและต้องการทราบว่ามีวิธีที่สง่างามกว่านี้ในการทำสิ่งนี้หรือไม่: select c.data into data from doc c where c.doc_id = id and c.group_cur > group_cur order by c.id desc limit 1; EXCEPTION WHEN NO_DATA_FOUND THEN select c.data into data from doc c where c.doc_id = id and c.global_cur > global_cur order by c.id desc limit …

3
ทำไม pg_restore ไม่สนใจ - สร้าง? ข้อผิดพลาด: ล้มเหลว: FATAL: ฐานข้อมูล“ new_db” ไม่มีอยู่
ฉันพยายามเรียกใช้คำสั่งต่อไปนี้: sshpass -p "pass" ssh x@1.2.3.4 "pg_dump -Fc -U foo some_db" | pg_restore --create --dbname=new_db ฉันเข้าใจ: failed: FATAL: database "new_db" does not exist

4
วิธีทำ pg_dump ข้ามส่วนขยาย
นี่คือ 9.3 แต่ฉันสามารถจำสิ่งที่ simillar เกิดขึ้นตั้งแต่ 7.x ดังนั้นฉันสร้างฐานข้อมูลและติดตั้งส่วนขยาย plpgsql ลงไป ต่อมาฉันสร้าง pg_dump และก่อนที่จะกู้คืนเป็น databse ฉันแน่ใจว่ามันมีส่วนขยาย plpgsql ด้วย จากนั้นเมื่อการกู้คืนข้อมูลนี้เกิดขึ้น: pg_restore: creating EXTENSION plpgsql pg_restore: creating COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] Error while PROCESSING TOC: pg_restore: [archiver (db)] Error from TOC entry 2053; 0 0 COMMENT EXTENSION plpgsql pg_restore: [archiver (db)] could …

2
psql: FATAL: ขออภัยมีลูกค้ามากเกินไปแล้ว
ฉันพบข้อผิดพลาดนี้เมื่อพยายามเข้าถึงเว็บไซต์ที่ใช้ฐานข้อมูล postgresql หรือแม้กระทั่งเมื่อใช้ยูทิลิตี psql หรือ pgadmin3 ฐานข้อมูลของฉันถูกตั้งค่าให้จัดการ 150 การเชื่อมต่อสูงสุด: # SHOW max_connections; max_connections ----------------- 150 (1 row) หลังจากรีบูตเซิร์ฟเวอร์ ubuntu ที่เว็บไซต์ของฉันเปิดอยู่ (ซึ่งเป็นสิ่งเดียวที่ใช้การเชื่อมต่อ) ฉันเห็นจำนวนการเชื่อมต่อปัจจุบันคือ 140: # select count(*) from pg_stat_activity; count ------- 140 (1 row) ฉันไม่เข้าใจว่าการเชื่อมต่อจำนวนมากอย่างกระทันหันหลังจากรีบูตเซิร์ฟเวอร์ของฉัน ดังนั้นฉันจะตรวจสอบกิจกรรม postgresql: # SELECT * FROM pg_stat_activity; และฉันเห็นคอลัมน์มากกว่า 100 คอลัมน์ที่มีข้อความค้นหาที่เหมือนกันซึ่งมีลักษณะดังนี้: SELECT "reports".* FROM "reports" WHERE (("reports"."time" …

1
ฉันจะเก็บหมายเลขโทรศัพท์ใน PostgreSQL ได้อย่างไร
สมมติว่าฉันต้องการจัดเก็บหมายเลขโทรศัพท์ในฐานข้อมูล ฉันอาจรับหมายเลขโทรศัพท์จากนอกสหรัฐอเมริกา ฉันจะเก็บหมายเลขโทรศัพท์เหล่านี้ได้อย่างไร

4
ดัชนีประสิทธิภาพสำหรับ CHAR กับ VARCHAR (Postgres)
ในคำตอบนี้ ( /programming/517579/strings-as-primary-keys-in-sql-database ) คำพูดเดียวจับตาฉัน: โปรดทราบว่ามักจะมีความแตกต่างระหว่าง CHAR และ VARCHAR บ่อยมากเมื่อทำการเปรียบเทียบดัชนี สิ่งนี้ใช้ได้ / ยังใช้กับ Postgres หรือไม่? ฉันพบหน้าเว็บใน Oracle ที่อ้างว่าCHARเป็นนามแฝงไม่มากก็น้อยVARCHARดังนั้นประสิทธิภาพของดัชนีก็เหมือนกัน แต่ฉันไม่พบอะไรที่ชัดเจนสำหรับ Postgres

3
ใช้ PostgreSQL 8.4 จะแปลง bytea เป็นค่าข้อความใน postgres ได้อย่างไร?
ในแอปพลิเคชันของฉันฉันใส่ข้อมูลในฐานข้อมูลโดยใช้รหัส C เนื่องจากสตริงที่ฉันได้รับจากแหล่งที่ไม่น่าเชื่อถือฉันได้หนีพวกเขาโดยใช้PQescapeByteaConnไลบรารี libpq ซึ่งทำงานได้ดีอย่างสมบูรณ์เช่นผลลัพธ์ในรูปแบบ Octet String ดูตัวอย่างด้านล่าง สตริงอินพุต: \n\t\f\b\p\k\j\l\mestPrepared สตริงเอาท์พุท: \\012\\011\\014\\010pkjlmestPrepared เอาต์พุตสตริงถูกแทรกในฐานข้อมูล ตอนนี้ฉันดึงข้อมูลจากฐานข้อมูลในรหัส java โดยใช้ JDBC ฉันจะ unescape สตริงกลับไปเป็นค่าเดิมได้อย่างไร ฉันคิดถึงวิธีที่เป็นไปได้สองวิธี เปลี่ยนเคียวรีการดึงฐานข้อมูลและส่งฟิลด์นี้ไปยังฟังก์ชันการจัดการสตริงของ postgres เช่นซึ่งสามารถแปลงไบต์เป็นข้อความ ทำการถอดรหัสในโค้ด Java ฉันเข้าใจว่าวิธีที่ 1 จะมีประสิทธิภาพมากขึ้น ฉันได้ลองฟังก์ชั่นเกือบทั้งหมดที่ระบุไว้ที่นี่แต่ไม่มีอะไรทำงาน กรุณาช่วย!! ฉันใช้ postgres รุ่น 8.4 บนเครื่อง linux

1
ปิดใช้งานข้อ จำกัด ก่อนใช้ pg_restore.exe
เมื่อฉันพยายามเรียกใช้pg_restore.exeงานไฟล์ดัมพ์จากฐานข้อมูลมันก็จะพ่นข้อผิดพลาดออกมาหลายสิบข้อทั้งหมดเหมือนกัน: ERROR: insert or update on table "someTable" violates foreign key constraint "aConstraintName" เห็นได้ชัดว่าเป็นเพราะความจริงที่ว่าฉันได้ลบฐานข้อมูลก่อนที่จะกู้คืนจากไฟล์การถ่ายโอนข้อมูล (ไฟล์นี้มาจากฐานข้อมูลการผลิต) ... แล้วแน่นอนไม่มีข้อ จำกัด กุญแจต่างประเทศสามารถตกลงถ้าตารางอ้างอิงหนึ่งที่ว่างเปล่า ... มีวิธีปิดใช้งานข้อ จำกัด และคีย์ต่างประเทศทั้งหมดสำหรับตารางทั้งหมดก่อนที่ฉันจะโทรpg_restore.exeและหลังจากนั้นเปิดใช้งานข้อ จำกัด และคีย์ต่างประเทศอีกครั้ง ดังนั้นในการที่ฉันได้พบสิ่งที่น่าสนใจ: ชะลอการ จำกัด การตรวจสอบเพื่อกระทำเวลา แต่ฉันไม่คิดว่าฉันสามารถโทรpg_restore.exeจากภายในได้psql.exeหลังจากชะลอข้อ จำกัด นอกจากนี้ยังมีโพสต์นี้ย้อนหลังไปเมื่อ 10 ปีก่อนแนะนำให้วางแล้วเพิ่มข้อ จำกัด อีกครั้ง หรือเปลี่ยนค่าของ pg_class reltriggers เป็น 0 และนั่นอาจเป็นไปได้สำหรับข้อ จำกัด ... แต่ฉันเกรงว่ามันแฮ็คมากกว่าการฝึกฝนที่ดี ... คุณแนะนำอะไรแนวทางปฏิบัติที่ดีที่สุดในกรณีนี้คืออะไร การใช้pg_dump.exe กับ-cleanแฟล็กจะสร้างดัมพ์ที่ข้ามข้อ จำกัด …

1
'การอ้างอิงคอลัมน์ไม่ชัดเจน' เมื่อเพิ่มองค์ประกอบลงในตาราง
ฉันใช้ PostgreSQL เป็นฐานข้อมูลของฉัน และฉันจำเป็นต้องสร้างรายการในฐานข้อมูลและหากมีอยู่แล้วเพียงแค่อัปเดตฟิลด์ แต่ควรอัปเดตหนึ่งในฟิลด์ต่อไปหากยังไม่ได้ตั้งค่า ฉันใช้ข้อมูลจากคำถามนี้: /programming/13305878/dont-update-column-if-update-value-is-nullมันค่อนข้างเกี่ยวข้องกับสิ่งที่ฉันมี ฉันพยายามที่จะใช้แบบสอบถามนี้ แต่เมื่อฉันเรียกใช้มันข้อผิดพลาดกับColumn reference 'affiliate_code' is ambiguous: INSERT INTO accounts (id, token, affiliate_code) VALUES (value1, value2, value3) ON CONFLICT (id) DO UPDATE SET token = value2, affiliate_code = COALESCE(affiliate_code, value3); (ค่าจริงถูกแทนที่แน่นอน) หากฉันแทนที่affiliate_code = COALESCE(affiliate_code, value3)ด้วยaffiliate_code = value3ทุกอย่างทำงานได้ แต่ไม่ใช่ในแบบที่ฉันต้องการให้ทำงาน ฉันจะทำงานนี้ได้อย่างไร นี่คือวิธีการกำหนดตารางของฉัน: CREATE TABLE accounts ( …

1
วิธีรับวัตถุเฉพาะจากอาร์เรย์ jsonb ใน PostgreSQL
ฉันมีเขตข้อมูลที่เรียกว่า 'ผู้ใช้' ที่มีอาร์เรย์ json ที่มีลักษณะเช่นนี้: "user": [{ "_id" : "1", "count" : "4" }, { "_id" : "3", "count": "4"}] ตอนนี้ฉันต้องการแบบสอบถามเช่น: select count from tablename where id = "1" ฉันไม่สามารถรับฟิลด์เฉพาะcountจากอาร์เรย์ของวัตถุ json ใน PostgreSQL 9.4

3
เส้นทางไบนารีในการกำหนดค่า pgAdmin
ฉันติดตั้ง PostgreSQL เพราะฉันต้องการกู้คืน.backupไฟล์ขนาดใหญ่ที่ฉันได้รับจากการอัปโหลดไปยังแพลตฟอร์มอื่น (38 ล้านแถวซึ่งดูเหมือนว่าใหญ่เกินไปสำหรับบุคคลที่จะส่งออกด้วยวิธีอื่น) เมื่อฉันพยายาม "กู้คืน" ใน pgAdmin 4 ฉันได้รับข้อความ: โปรดกำหนดค่าเส้นทางไบนารีของ PostgreSQL ในกล่องโต้ตอบการตั้งค่า นี่เป็นเพียงเส้นทางไปยังโฟลเดอร์ PostgreSQL หรือไม่ ฉันไม่พบเอกสารเกี่ยวกับสิ่งนี้ในไซต์ PostgreSQL ทั้งหมดที่ฉันสามารถหาได้คือ: ใช้ฟิลด์ในโหนด Binary Path เพื่อระบุพา ธ ไปยังยูทิลิตี้ไบนารี PostgreSQL และ EnterpriseDB Postgres Advanced Server ยูทิลิตี้ไบนารี มีวิธีที่ง่ายกว่าในการกู้คืนฐานข้อมูลอื่นที่ไม่ใช่ผ่าน pgAdmin หรือไม่?

4
การวางคอลัมน์ PostgreSQL 9.6 และผลข้างเคียงต่อฟังก์ชัน SQL ด้วย CTE
ถ้าฉันมีตารางที่มี 3 คอลัมน์ - พูด A, B และ D - และฉันต้องแนะนำใหม่ - พูด C เพื่อแทนที่ตำแหน่งปัจจุบันของ D ฉันจะใช้วิธีการต่อไปนี้: แนะนำ 2 คอลัมน์ใหม่เป็น C และ D2 คัดลอกเนื้อหาของ D ถึง D2 ลบ D. เปลี่ยนชื่อ D2 เป็น D คำสั่งซื้อใหม่จะเป็น A, B, C และ D ฉันคิดว่านี่เป็นวิธีปฏิบัติที่ถูกต้องตามกฎหมายเพราะจนถึงตอนนี้มันก็ไม่มีปัญหา อย่างไรก็ตามวันนี้ฉันเจอปัญหาเมื่อฟังก์ชั่นที่ดำเนินการคำสั่งบนตารางเดียวกันส่งคืนข้อผิดพลาดต่อไปนี้: table row type and query-specified row type do not …

2
ความลึกของลูกหลานแบบเรียกซ้ำ PostgreSQL
ฉันต้องคำนวณความลึกของลูกหลานจากบรรพบุรุษของมัน เมื่อมีการบันทึกobject_id = parent_id = ancestor_idจะถือว่าเป็นโหนดรูท (บรรพบุรุษ) ผมได้พยายามที่จะได้รับWITH RECURSIVEการสอบถามการทำงานกับ PostgreSQL 9.4 ฉันไม่ได้ควบคุมข้อมูลหรือคอลัมน์ data และ schema ของตารางมาจากแหล่งภายนอก ตารางจะเติบโตอย่างต่อเนื่อง ตอนนี้บันทึกประมาณ 30k ต่อวัน โหนดใด ๆ ในทรีสามารถหายไปและพวกเขาจะถูกดึงจากแหล่งภายนอกในบางจุด พวกเขามักจะถูกดึงcreated_at DESCตามลำดับ แต่ข้อมูลจะถูกดึงด้วยงานพื้นหลังแบบอะซิงโครนัส เริ่มแรกเรามีวิธีแก้ไขปัญหาของรหัส แต่ตอนนี้มี 5M + แถวใช้เวลาเกือบ 30 นาทีจึงจะเสร็จสมบูรณ์ ตัวอย่างคำจำกัดความของตารางและข้อมูลการทดสอบ: CREATE TABLE objects ( id serial NOT NULL PRIMARY KEY, customer_id integer NOT NULL, object_id integer …

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