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

PostgreSQL เป็นระบบจัดการฐานข้อมูลเชิงวัตถุแบบโอเพ่นซอร์ส (ORDBMS) ที่พร้อมใช้งานสำหรับแพลตฟอร์มหลักทั้งหมดรวมถึง Linux, UNIX, Windows และ OS X โปรดพูดถึง Postgres รุ่นที่แน่นอนของคุณเมื่อถามคำถาม คำถามเกี่ยวกับการดูแลระบบหรือคุณสมบัติขั้นสูงจะส่งตรงไปที่ dba.stackexchange.com

4
Heroku Postgres - ยุติการค้นหาที่หยุดทำงาน (ไม่ได้ใช้งานในการทำธุรกรรม)
ฉันใช้ Heroku กับตัวเลือก Crane Postgres และฉันกำลังเรียกใช้การสืบค้นบนฐานข้อมูลจากเครื่องในพื้นที่ของฉันเมื่อเครื่องในพื้นที่ของฉันขัดข้อง ถ้าฉันวิ่ง select * from pg_stat_activity หนึ่งในรายการมี <IDLE> in transaction ในคอลัมน์ current_query_text ด้วยเหตุนี้ฉันจึงไม่สามารถวางตารางที่ถูกเขียนถึงโดยคำค้นหาที่ถูกยกเลิกได้ ฉันได้ลองใช้ pg_cancel_backend (N) และส่งคืน True แต่ดูเหมือนจะไม่มีอะไรเกิดขึ้น ฉันจะยุติกระบวนการนี้เพื่อวางตารางได้อย่างไร
102 postgresql  heroku 

7
เขตเวลาเริ่มต้น postgres
ฉันติดตั้งPostgreSQL 9แล้วและเวลาที่แสดงช้ากว่าเวลาเซิร์ฟเวอร์ 1 ชั่วโมง การSelect NOW()แสดง:2011-07-12 11:51:50.453842+00 วันที่เซิร์ฟเวอร์แสดง: Tue Jul 12 12:51:40 BST 2011 ช้ากว่า 1 ชั่วโมง แต่เขตเวลาที่แสดงphppgadminคือ:TimeZone Etc/GMT0 ฉันได้ลองเข้าสู่การpostgresql.confตั้งค่าและ เขตเวลา = GMT จากนั้นทำการรีสตาร์ท แต่ไม่มีการเปลี่ยนแปลง ความคิดใดที่ฉันคิดว่ามันจะใช้แค่เขตเวลาเซิร์ฟเวอร์ แต่ไม่ชัด?! วิธีแก้ปัญหา!: ฉันตั้งค่าไว้GMTก่อนหน้านี้และช้ากว่าหนึ่งชั่วโมง Europe/Londonหลังจากค้นหารอบปรากฎว่าฉันต้องการที่จะตั้งค่าให้ สิ่งนี้คำนึงถึง +1 ชั่วโมงในช่วงฤดูร้อนของอังกฤษ GMT ไม่ได้!
102 postgresql 

9
PostgreSQL - ดึงแถวที่มีค่าสูงสุดสำหรับคอลัมน์
ฉันกำลังจัดการกับตาราง Postgres (เรียกว่า "ชีวิต") ที่มีระเบียนที่มีคอลัมน์สำหรับ time_stamp, usr_id, transaction_id และ lives_remaining ฉันต้องการคำค้นหาที่จะให้ผลรวม life_remaining ล่าสุดสำหรับ usr_id แต่ละรายการ มีผู้ใช้หลายคน (usr_id ต่างกัน) time_stamp ไม่ใช่ตัวระบุที่ไม่ซ้ำกัน: บางครั้งเหตุการณ์ของผู้ใช้ (ทีละแถวในตาราง) จะเกิดขึ้นพร้อมกับ time_stamp เดียวกัน trans_id จะไม่ซ้ำกันสำหรับช่วงเวลาที่เล็กมากเท่านั้น: เมื่อเวลาผ่านไปจะเกิดซ้ำ ส่วนที่เหลือ (สำหรับผู้ใช้ที่ระบุ) สามารถเพิ่มและลดได้เมื่อเวลาผ่านไป ตัวอย่าง: time_stamp | lives_remaining | usr_id | trans_id ----------------------------------------- 07:00 | 1 | 1 | 1 09:00 | 4 …

5
เรียกใช้แบบสอบถามด้วย LIMIT / OFFSET และรับจำนวนแถวทั้งหมด
เพื่อจุดประสงค์ในการแบ่งหน้าฉันต้องการเรียกใช้แบบสอบถามที่มีLIMITและOFFSETอนุประโยค แต่ฉันยังต้องการจำนวนแถวที่จะถูกส่งคืนโดยแบบสอบถามนั้นโดยไม่มีLIMITและส่วนOFFSETคำสั่ง ฉันต้องการวิ่ง: SELECT * FROM table WHERE /* whatever */ ORDER BY col1 LIMIT ? OFFSET ? และ: SELECT COUNT(*) FROM table WHERE /* whatever */ ในเวลาเดียวกัน. มีวิธีดำเนินการโดยเฉพาะอย่างยิ่งวิธีที่ช่วยให้ Postgres ปรับให้เหมาะสมเพื่อให้ทำงานได้เร็วกว่าการทำงานทั้งสองอย่างทีละรายการ

13
วิธีการกรองผลลัพธ์ SQL ในความสัมพันธ์แบบหลายผ่าน
สมมติว่าผมมีตารางstudent, clubและstudent_club: student { id name } club { id name } student_club { student_id club_id } ฉันต้องการทราบวิธีค้นหานักเรียนทุกคนในชมรมฟุตบอล (30) และเบสบอล (50) แม้ว่าการสืบค้นนี้จะใช้ไม่ได้ผล แต่ก็เป็นสิ่งที่ใกล้เคียงที่สุดที่ฉันมี: SELECT student.* FROM student INNER JOIN student_club sc ON student.id = sc.student_id LEFT JOIN club c ON c.id = sc.club_id WHERE c.id = 30 AND c.id = …

12
คุณสร้างสตริงแบบสุ่มที่เหมาะสมกับรหัสเซสชันใน PostgreSQL ได้อย่างไร
ฉันต้องการสร้างสตริงแบบสุ่มเพื่อใช้ในการตรวจสอบเซสชันโดยใช้ PostgreSQL ฉันรู้ว่าฉันสามารถสุ่มเลขได้SELECT random()ฉันจึงลองSELECT md5(random())แต่ก็ไม่ได้ผล ฉันจะทำเช่นนี้ได้อย่างไร?
101 postgresql  random 

8
วิธีการยกเว้นค่า null ใน array_agg เช่นใน string_agg โดยใช้ postgres?
ถ้าฉันใช้array_aggเพื่อรวบรวมชื่อฉันจะได้ชื่อของฉันคั่นด้วยลูกน้ำ แต่ในกรณีที่มีnullค่า null นั้นจะถูกนำมาเป็นชื่อในการรวมด้วย ตัวอย่างเช่น : SELECT g.id, array_agg(CASE WHEN g.canonical = 'Y' THEN g.users ELSE NULL END) canonical_users, array_agg(CASE WHEN g.canonical = 'N' THEN g.users ELSE NULL END) non_canonical_users FROM groups g GROUP BY g.id; มันกลับมา,Larry,Philแทนที่จะเป็นเพียงแค่Larry,Phil(ใน 9.1.2 ของฉันมันแสดงให้เห็นNULL,Larry,Phil) เช่นเดียวกับในซอนี้ แต่ถ้าฉันใช้string_agg()มันจะแสดงเฉพาะชื่อ (โดยไม่มีเครื่องหมายจุลภาคหรือว่างเปล่า) เหมือนที่นี่ ปัญหาคือฉันPostgres 8.4ติดตั้งบนเซิร์ฟเวอร์แล้วและstring_agg()ใช้งานไม่ได้ มีวิธีใดบ้างที่จะทำให้ array_agg ทำงานคล้ายกับ string_agg ()?

3
วิธีจัดเรียงผลลัพธ์จาก string_agg ()
ฉันมีโต๊ะ: CREATE TABLE tblproducts ( productid integer, product character varying(20) ) ด้วยแถว: INSERT INTO tblproducts(productid, product) VALUES (1, 'CANDID POWDER 50 GM'); INSERT INTO tblproducts(productid, product) VALUES (2, 'SINAREST P SYP 100 ML'); INSERT INTO tblproducts(productid, product) VALUES (3, 'ESOZ D 20 MG CAP'); INSERT INTO tblproducts(productid, product) VALUES (4, …

9
ใช้หลายเป้าหมายข้อขัดแย้งในคำสั่ง ON CONFLICT
ฉันมีสองคอลัมน์ในตารางcol1, col2พวกเขาทั้งสองจะไม่ซ้ำกันจัดทำดัชนี (col1 จะไม่ซ้ำกันและเพื่อให้เป็น col2) ฉันต้องการที่จะแทรกลงในตารางนี้ใช้ON CONFLICTไวยากรณ์และอัปเดตคอลัมน์อื่น ๆ แต่ฉันไม่สามารถใช้ทั้งสองคอลัมน์ในconflict_targetประโยคได้ มันได้ผล: INSERT INTO table ... ON CONFLICT ( col1 ) DO UPDATE SET -- update needed columns here แต่จะทำอย่างไรกับหลายคอลัมน์เช่นนี้: ... ON CONFLICT ( col1, col2 ) DO UPDATE SET ....

2
ฉันจะให้ pg_dump ตรวจสอบสิทธิ์อย่างถูกต้องได้อย่างไร
ฉันได้พยายามใช้ตัวแปรโฮสต์PGPASSWORDและ.pgpassและค่าของทั้งสองจะช่วยให้ฉันในการตรวจสอบกับฐานข้อมูล ฉันมีchmod'd .pgpassสิทธิ์ที่เหมาะสมและยังพยายาม: export PGPASSWORD=mypass and PGPASSWORD=mypass รหัสผ่านมีข้อ\แม้ว่าฉันกำลังห่อหุ้มไว้ในเครื่องหมายคำพูดเดียวPGPASS='mypass\'และจะยังไม่รับรองความถูกต้อง ฉันกำลังวิ่ง: pg_dump dbname -U username -Fc และฉันยังคงได้รับ pg_dump: [archiver (db)] connection to database "dbname" failed: FATAL: Peer authentication failed for user "username"

7
Postgres ไม่อยู่ในอาร์เรย์
ฉันใช้ประเภทอาร์เรย์เนทีฟของ Postgres และพยายามค้นหาเร็กคอร์ดที่ ID ไม่อยู่ใน ID ผู้รับอาร์เรย์ ฉันสามารถค้นหาว่าพวกเขาอยู่ที่ไหน: SELECT COUNT(*) FROM messages WHERE (3 = ANY (recipient_ids)) แต่ไม่ได้ผล: SELECT COUNT(*) FROM messages WHERE (3 != ANY (recipient_ids)) SELECT COUNT(*) FROM messages WHERE (3 = NOT ANY (recipient_ids)) วิธีที่ถูกต้องในการทดสอบเงื่อนไขนี้คืออะไร?
100 arrays  postgresql 

9
รายการ Postgres ประเภท ENUM
แบบสอบถามแนะนำให้รายการประเภท ENUMเป็นที่ดี แต่เป็นเพียงรายการของschemaและtypname. ฉันจะแสดงรายการค่า ENUM จริงได้อย่างไร ตัวอย่างเช่นในคำตอบที่เชื่อมโยงด้านบนฉันต้องการผลลัพธ์ต่อไปนี้ schema type values ------------- -------- ------- communication channels 'text_message','email','phone_call','broadcast'
100 postgresql 

3
PostgreSQL รองรับการเปรียบเทียบแบบ“ เน้นเสียง” หรือไม่
ใน Microsoft SQL Server เป็นไปได้ที่จะระบุการเปรียบเทียบแบบ "ไม่เน้นเสียง" (สำหรับฐานข้อมูลตารางหรือคอลัมน์) ซึ่งหมายความว่าเป็นไปได้สำหรับแบบสอบถามเช่น SELECT * FROM users WHERE name LIKE 'João' เพื่อค้นหาแถวที่มีJoaoชื่อ ฉันรู้ว่าเป็นไปได้ที่จะตัดสำเนียงจากสตริงใน PostgreSQL โดยใช้ฟังก์ชันการสนับสนุนunaccent_stringแต่ฉันสงสัยว่า PostgreSQL รองรับการเรียง "ไม่เน้นเสียง" เหล่านี้หรือไม่ดังนั้นSELECTข้างต้นจะได้ผล

3
วิธีการเลือกด้วย array มี value clause ใน psql
ฉันมีคอลัมน์ที่เป็นประเภทarr array ฉันต้องการรับแถวโดยที่arrคอลัมน์มีค่าs คำถามนี้: SELECT * FROM table WHERE arr @> ARRAY['s'] ให้ข้อผิดพลาด: ข้อผิดพลาด: ไม่มีตัวดำเนินการ: อักขระที่แตกต่างกัน [] @> text [] ทำไมมันไม่ทำงาน? ps ฉันรู้เกี่ยวกับany()ตัวดำเนินการ แต่ทำไมไม่@>ทำงาน

7
สร้างตัวเลขสุ่มในช่วง 1 - 10
เนื่องจากแนวทางของฉันสำหรับคำถามทดสอบที่ฉันใช้ในคำถามนี้ไม่ได้ผลฉันจึงพยายามอย่างอื่นในตอนนี้ มีวิธีบอกrandom()ฟังก์ชันของ pg เพื่อให้ฉันได้แค่ตัวเลขระหว่าง 1 ถึง 10 หรือไม่?
99 sql  postgresql  random 

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