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

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

9
จะแสดงรหัสโพรซีเดอร์ที่จัดเก็บแบบเต็มได้อย่างไร?
คุณดูกระบวนงาน / ฟังก์ชันที่จัดเก็บไว้อย่างไร? สมมติว่าฉันมีฟังก์ชันเก่าที่ไม่มีคำจำกัดความดั้งเดิม - ฉันต้องการดูว่ามันกำลังทำอะไรใน pg / psql แต่ดูเหมือนว่าฉันจะหาวิธีทำไม่ได้ ใช้ Postgres เวอร์ชัน 8.4.1

7
คอลัมน์ที่คำนวณ / คำนวณ / เสมือน / ที่ได้รับใน PostgreSQL
PostgreSQL รองรับคอลัมน์ที่คำนวณ / คำนวณเช่น MS SQL Server หรือไม่ ฉันไม่พบสิ่งใดในเอกสาร แต่เนื่องจากคุณลักษณะนี้รวมอยู่ใน DBMS อื่น ๆ อีกมากมายฉันจึงคิดว่าอาจขาดอะไรไป เช่น: http://msdn.microsoft.com/en-us/library/ms191250.aspx

1
“ Bitmap heap scan” ในแผนการสืบค้นคืออะไร?
ฉันต้องการทราบหลักการของ "Bitmap heap scan" ฉันรู้ว่าสิ่งนี้มักเกิดขึ้นเมื่อฉันดำเนินการค้นหาโดยORอยู่ในเงื่อนไข ใครสามารถอธิบายหลักการเบื้องหลัง "Bitmap heap scan" ได้บ้าง



10
ลบระเบียนที่ซ้ำกันใน PostgreSQL
ฉันมีตารางในฐานข้อมูล PostgreSQL 8.3.8 ซึ่งไม่มีคีย์ / ข้อ จำกัด และมีหลายแถวที่มีค่าเหมือนกันทุกประการ ฉันต้องการลบรายการที่ซ้ำกันทั้งหมดและเก็บไว้เพียง 1 สำเนาของแต่ละแถว มีคอลัมน์หนึ่งคอลัมน์โดยเฉพาะ (ชื่อ "คีย์") ซึ่งอาจใช้เพื่อระบุรายการที่ซ้ำกัน (กล่าวคือควรมีเพียงรายการเดียวสำหรับ "คีย์" ที่แตกต่างกันแต่ละรายการ) ฉันจะทำเช่นนี้ได้อย่างไร? (ตามหลักแล้วคำสั่ง SQL คำสั่งเดียว) ความเร็วไม่ใช่ปัญหาในกรณีนี้ (มีเพียงไม่กี่แถว)

4
เพิ่มคอลัมน์การประทับเวลาด้วยค่าเริ่มต้น NOW () สำหรับแถวใหม่เท่านั้น
ฉันมีโต๊ะที่มีหลายพันแถว เนื่องจากตารางไม่ได้สร้างด้วยคอลัมน์ created_at ในตอนแรกจึงไม่มีวิธีรับการประทับเวลาการสร้าง เป็นสิ่งสำคัญแม้ว่าจะต้องเริ่มรับการประทับเวลาสำหรับแถวในอนาคต มีวิธีใดบ้างที่ฉันสามารถเพิ่มคอลัมน์การประทับเวลาด้วยค่าเริ่มต้น NOW () เพื่อที่จะไม่เติมค่าในแถวก่อนหน้า แต่สำหรับแถวในอนาคตเท่านั้น ถ้าฉันทำALTERแบบสอบถามมันจะเติมข้อมูลทุกแถวด้วยการประทับเวลา: ALTER TABLE mytable ADD COLUMN created_at TIMESTAMP DEFAULT NOW()
113 postgresql 


6
วิธีรวมผลลัพธ์“ ศูนย์” /“ 0” ในการรวม COUNT รายการ
ฉันเพิ่งติดอยู่กับ SQL เล็กน้อย ฉันไม่คิดว่าฉันจะเรียบเรียงคำถามได้อย่างยอดเยี่ยมดังนั้นให้ฉันแสดงให้คุณเห็น ฉันมีโต๊ะสองโต๊ะคนหนึ่งเรียกว่านัด ฉันกำลังพยายามส่งคืนจำนวนการนัดหมายที่บุคคลหนึ่งมีอยู่ (รวมถึงถ้าพวกเขามีศูนย์) การนัดหมายประกอบด้วยperson_idและมีการperson_idนัดหมายต่อครั้ง ดังนั้นจึงCOUNT(person_id)เป็นแนวทางที่สมเหตุสมผล คำถาม: SELECT person_id, COUNT(person_id) AS "number_of_appointments" FROM appointment GROUP BY person_id; จะกลับมาถูกต้องจำนวนการนัดหมายที่ person_id มี อย่างไรก็ตามบุคคลที่มีการนัดหมาย 0 ครั้งจะไม่กลับมา (เห็นได้ชัดว่าพวกเขาไม่ได้อยู่ในตารางนั้น) การปรับแต่งคำสั่งเพื่อรับ person_id จากตารางบุคคลทำให้ฉันมีบางสิ่งเช่น: SELECT person.person_id, COUNT(appointment.person_id) AS "number_of_appointments" FROM appointment JOIN person ON person.person_id = appointment.person_id GROUP BY person.person_id; อย่างไรก็ตามสิ่งนี้จะยังคงส่งคืนเฉพาะ person_id ที่มีการนัดหมายไม่ใช่สิ่งที่ฉันต้องการซึ่งเป็นการส่งคืนกับบุคคลที่มีการนัดหมาย 0 …


8
ฉันจะส่งออกสคีมาของฐานข้อมูลใน PostgreSQL ได้อย่างไร
คอมพิวเตอร์ของฉันพัง แต่โชคดีที่ฉันสำรองโฟลเดอร์ C: \ Program Files \ PostgreSQL ตอนนี้ฉันทำงานในคอมพิวเตอร์เครื่องใหม่และต้องการนำเข้าฐานข้อมูล Postgres ก่อนหน้านี้ที่เก็บไว้ในดิสก์ภายนอก ฉันต้องการส่งออกสคีมาของฐานข้อมูลเฉพาะที่อยู่ในโฟลเดอร์สำรอง ไฟล์PostgreSQL\8.3\data\global\pg_databaseนี้มีข้อมูลเกี่ยวกับฐานข้อมูลและ OIDs ตัวอย่างเช่น: "db1" 20012 "db2" 23456 ฉันต้องการส่งออกสคีมาของ "db1" มีโฟลเดอร์ชื่อ "20012" ในโฟลเดอร์"PostgreSQL\8.3\data\base\20012" ที่มีไฟล์จำนวนมาก [500 ไฟล์] มีวิธีใดบ้างในการส่งออกสคีมาของฐานข้อมูลนั้น? โปรดทราบว่าไฟล์ฐานข้อมูล Postgresql ทั้งหมดอยู่ในฮาร์ดดิสก์ภายนอกและฉันต้องการส่งออกสคีมาของฐานข้อมูลนั้นในไฟล์ SQL ใช้ไฟล์นั้นเรียกใช้และสร้างฐานข้อมูลเดียวกันในเครื่อง

2
Postgres: คีย์คอมโพสิตทำอย่างไร?
ฉันไม่เข้าใจข้อผิดพลาดทางไวยากรณ์ในการสร้างคีย์ผสม อาจเป็นข้อผิดพลาดทางตรรกะเนื่องจากฉันได้ทดสอบหลายพันธุ์ คุณสร้างคีย์ผสมใน Postgres ได้อย่างไร? CREATE TABLE tags ( (question_id, tag_id) NOT NULL, question_id INTEGER NOT NULL, tag_id SERIAL NOT NULL, tag1 VARCHAR(20), tag2 VARCHAR(20), tag3 VARCHAR(20), PRIMARY KEY(question_id, tag_id), CONSTRAINT no_duplicate_tag UNIQUE (question_id, tag_id) ); ERROR: syntax error at or near "(" LINE 3: (question_id, tag_id) NOT NULL, ^

3
PostgreSQL ลบเนื้อหาทั้งหมด
สวัสดีฉันต้องการลบข้อมูลทั้งหมดในตาราง postgresql ของฉัน แต่ไม่ใช่ตารางนั้นเอง ฉันจะทำสิ่งนี้ได้อย่างไร?
112 postgresql 

7
การจัดเก็บภาพใน PostgreSQL
เอาล่ะฉันกำลังทำงานกับแอปพลิเคชันซึ่งจะใช้ PostgreSQL แบ็คเอนด์ที่รัน Linux เพื่อให้บริการรูปภาพไปยังกล่อง Windows โดยส่วนหน้าเขียนด้วย C # .NET แม้ว่าส่วนหน้าจะไม่สำคัญ คำถามของฉันคือ: วิธีที่ดีที่สุดในการจัดการกับการจัดเก็บภาพใน Postgres คืออะไร? ภาพมีขนาดประมาณ 4-6 ล้านพิกเซลแต่ละภาพและเราจัดเก็บได้มากกว่า 3000 ภาพนอกจากนี้ยังควรทราบด้วยว่านี่ไม่ใช่เว็บแอปพลิเคชันโดยส่วนใหญ่จะมีส่วนหน้าประมาณสองส่วนในการเข้าถึงฐานข้อมูลพร้อมกัน
111 postgresql  image 

9
เหตุใดการวนซ้ำผ่าน Django QuerySet ขนาดใหญ่จึงใช้หน่วยความจำจำนวนมาก
ตารางที่เป็นปัญหามีประมาณสิบล้านแถว for event in Event.objects.all(): print event สิ่งนี้ทำให้การใช้หน่วยความจำเพิ่มขึ้นเรื่อย ๆ เป็น 4 GB หรือมากกว่านั้นซึ่งทำให้แถวต่างๆพิมพ์อย่างรวดเร็ว ความล่าช้าที่ยาวนานก่อนที่แถวแรกจะพิมพ์ทำให้ฉันประหลาดใจ - ฉันคาดว่ามันจะพิมพ์ได้เกือบจะในทันที ฉันยังพยายามEvent.objects.iterator()ที่มีพฤติกรรมแบบเดียวกัน ฉันไม่เข้าใจว่า Django กำลังโหลดอะไรลงในหน่วยความจำหรือเหตุใดจึงทำเช่นนี้ ฉันคาดว่า Django จะวนซ้ำผลลัพธ์ในระดับฐานข้อมูลซึ่งหมายความว่าผลลัพธ์จะถูกพิมพ์ในอัตราคงที่โดยประมาณ (แทนที่จะเป็นทั้งหมดในครั้งเดียวหลังจากรอเป็นเวลานาน) ฉันเข้าใจผิดอะไร (ฉันไม่รู้ว่ามันเกี่ยวข้องหรือเปล่า แต่ฉันใช้ PostgreSQL)

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