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

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

7
เลือกจุดเริ่มต้นและจุดสิ้นสุดของช่วงต่อเนื่องหลายช่วงอย่างมีประสิทธิภาพในแบบสอบถาม Postgresql
ฉันมีข้อมูลประมาณหนึ่งพันล้านแถวในตารางที่มีชื่อและจำนวนเต็มในช่วง 1-288 สำหรับชื่อที่กำหนดintทุกตัวจะไม่ซ้ำกันและไม่ใช่จำนวนเต็มเท่าที่เป็นไปได้ทั้งหมดในช่วงนั้น - ดังนั้นจึงมีช่องว่าง แบบสอบถามนี้สร้างกรณีตัวอย่าง: --what I have: SELECT * FROM ( VALUES ('foo', 2), ('foo', 3), ('foo', 4), ('foo', 10), ('foo', 11), ('foo', 13), ('bar', 1), ('bar', 2), ('bar', 3) ) AS baz ("name", "int") ฉันต้องการสร้างตารางการค้นหาที่มีแถวสำหรับแต่ละชื่อและลำดับของจำนวนเต็มต่อเนื่องกัน แต่ละแถวดังกล่าวจะประกอบด้วย: ชื่อ - ค่าของคอลัมน์ชื่อ เริ่มต้น - จำนวนเต็มแรกในลำดับ ท้ายที่ต่อเนื่องกัน - ค่าสุดท้ายใน ช่วงลำดับที่ต่อเนื่องกัน - …
19 query  postgresql 

2
Postgres รักษาลำดับการแทรกของระเบียนหรือไม่
ตัวอย่างเช่นเมื่อฉันใช้การสืบค้นซึ่งจะส่งกลับรหัสบันทึก INSERT INTO projects(name) VALUES (name1), (name2), (name3) returning id; ซึ่งผลิตผลผลิต: 1 2 3 รหัสนี้จะชี้ไปที่ค่าแทรกที่สอดคล้องกันหรือไม่ 1 -> name1 2 -> name2 3 -> name3

3
Postgresql ไม่ยอมรับการเชื่อมต่อการจำลองแบบ
การจำลองแบบสตรีมมิ่งแบบธรรมดาธรรมดา PostgreSQL: 9.2.7 Windows 8.1 64 บิต คลัสเตอร์หลักและรองของฉันอยู่บนเครื่อง Windows เดียวกัน ฉันทำpg_start_backup ()และทุกอย่างเรียบร้อยแล้วดังนั้นทั้งสองโหนดจึงมีข้อมูลเหมือนกัน ขณะนี้ปัญหาเกี่ยวกับการจำลองแบบคือ "การเชื่อมต่อการจำลองแบบ" จากเซิร์ฟเวอร์ทาสไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์หลัก แต่ฉันสามารถเชื่อมต่อโดยใช้ params เดียวกันโดยใช้เปลือก psql สิ่งที่ฉันคิดว่าผู้ร้ายคือสตริงการเชื่อมต่อในการกู้คืนของทาส: primary_conninfo = 'host = 127.0.0.1 port = 5432 user = postgres password = postgres' ฉันพยายาม localhost, 0.0.0.0, lan IP ทุกอย่าง แต่บันทึก pg บอกว่า: FATAL: could not connect to the primary …

3
PostgreSQL ใช้การนับ () เพื่อกำหนดเปอร์เซ็นต์ (ปัญหาการส่ง)
ฉันพยายามเรียกใช้แบบสอบถามต่อไปนี้เพื่อให้% ของแถวในpatientsตารางของฉันที่มีค่าrefinstคอลัมน์ ฉันได้รับผลลัพธ์เป็น 0 select (count (refinst) / (select count(*) from patients) * 100) as "Formula" from patients; ตารางมี 15556 แถวและselect count(refinst) from patientsบอกฉันว่า 1446 ของแถวนั้นมีค่าในrefinstคอลัมน์ การตอบสนองที่ฉันต้องการได้รับจากแบบสอบถามจะเท่ากับ 30.62 ( 1446/15556*100=30.62XXXXXปัดเศษเป็นทศนิยมสองตำแหน่ง) ฉันค่อนข้างแน่ใจว่ามีบางอย่างเกี่ยวกับประเภทข้อมูลของผลลัพธ์การนับ (จำนวนเต็มที่ฉันสมมติ) หากฉันหารจำนวนเต็มด้วยจำนวนเต็มและผลลัพธ์มีค่าน้อยกว่า 0 จะถูกปัดเศษเป็น 0 ที่ถูกต้องหรือไม่ หากเป็นกรณีนี้มีใครแสดงให้ฉันเห็นวิธีการนับผลลัพธ์เป็นจำนวนที่มีทศนิยม 2 ตำแหน่งเพื่อที่ผลลัพธ์จะถูกปัดเศษเป็นทศนิยม 2 ตำแหน่งเช่นกัน ฉันแน่ใจว่ามีวิธีที่ดีกว่าในการเขียนรหัสนี้มากกว่าหลายคำสั่งนับ ฉันกำลังมองหาวิธีที่มีประสิทธิภาพโปรเซสเซอร์มากขึ้นในการเขียนแบบสอบถามนี้โดยเฉพาะ
19 postgresql  count  cast 

2
ข้อ จำกัด ของคอลัมน์ที่ไม่ซ้ำกันที่กำหนดเองมีผลบังคับใช้เฉพาะถ้าหนึ่งคอลัมน์มีค่าเฉพาะ
เป็นไปได้หรือไม่ที่จะมีข้อ จำกัด คอลัมน์เฉพาะที่กำหนดเองดังต่อไปนี้ สมมติว่าฉันมีสองคอลัมน์subsetและtypeทั้งสองสตริง (แม้ว่าชนิดข้อมูลอาจไม่สำคัญ) ถ้าtypeเป็น "จริง" ฉันก็อยากจะผสมผสานtypeและsubsetเป็นเอกลักษณ์ มิฉะนั้นจะไม่มีข้อ จำกัด ฉันใช้ PostgreSQL 8.4 บนเดเบียน

1
ข้อผิดพลาด: ไม่มีฐานข้อมูล“ dbname”
ตามเอกสารประกอบตราบใดที่ฉันไม่ได้เชื่อมต่อกับฐานข้อมูลฉันสามารถลบฐานข้อมูลในคอนโซลโดยใช้: DROP DATABASE dbname; dropdbหรือฉันสามารถวางได้โดยใช้เครื่องมือที่มีเสื้อคลุม ทั้งสองให้ข้อผิดพลาดว่าฐานข้อมูลไม่มีอยู่ แต่เมื่ออยู่ในคอนโซลและพิมพ์คำสั่ง\lฉันได้รับรายการฐานข้อมูลรวมถึงฐานข้อมูลที่ฉันต้องการลบ List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges ---------------------------+-----------+----------+-------------+-------------+----------------------- Blog_development | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 | Blog_test | myusername | UTF8 | en_US.UTF-8 | en_US.UTF-8 | ชื่อฐานข้อมูลคือ Blog_development (และอีกหนึ่งชื่อด้านล่าง) ฉันกำลังเล่นกับรางและพยายามเรียนรู้จากเอกสารออนไลน์ ฉันต้องการเริ่มต้นใหม่และลบทุกอย่าง เมื่อพยายามที่จะลบมันก็บอกว่ามันไม่ได้อยู่ ฉันใหม่เอี่ยมสำหรับ …
19 postgresql 

2
เลื่อนระดับแผนแบบสอบถามของการเรียกใช้ฟังก์ชันที่เขียนใน plpgsql
มันเป็นไปได้เมื่อใช้pgadminหรือplsqlจะได้รับถือของแผนแบบสอบถามสำหรับคำสั่ง SQL ดำเนินการภายในU ser d efined ฉตื่นเต้น (UDF) EXPLAINโดยใช้ ดังนั้นฉันจะได้รับแผนแบบสอบถามสำหรับการร้องขอ UDF โดยเฉพาะได้อย่างไร ฉันเห็น UDF ที่แยกออกไปเป็นการดำเนินการเดียวF()ใน pgadmin ฉันดูเอกสารแล้ว แต่หาอะไรไม่เจอ ขณะนี้ฉันกำลังดึงคำแถลงและเรียกใช้ด้วยตนเอง แต่สิ่งนี้จะไม่ถูกตัดออกไปสำหรับข้อความค้นหาขนาดใหญ่ ตัวอย่างเช่นพิจารณา UDF ด้านล่าง UDF นี้แม้ว่ามันจะมีความสามารถในการพิมพ์สตริงการสืบค้นของมันจะไม่ทำงานกับการคัดลอกวางเพราะมันมีตารางชั่วคราวที่สร้างขึ้นในท้องถิ่นซึ่งไม่มีอยู่เมื่อคุณวางและดำเนินการ CREATE OR REPLACE FUNCTION get_paginated_search_results( forum_id_ INTEGER, query_ CHARACTER VARYING, from_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, to_date_ TIMESTAMP WITHOUT TIME ZONE DEFAULT NULL, in_categories_ …

1
วิธีการรักษาลำดับขององค์ประกอบดั้งเดิมในอาร์เรย์ที่ไม่ผ่านการทดสอบ
รับสาย: 'ฉันคิดว่า PostgreSQL นั้นดี' ฉันต้องการทำงานกับคำแต่ละคำที่พบในสตริงนั้น โดยพื้นฐานแล้วฉันมีส่วนแยกต่างหากซึ่งฉันสามารถรับรายละเอียดคำศัพท์และต้องการที่จะเข้าร่วมอาร์เรย์ของสตริงนั้นในพจนานุกรมนี้ จนถึงตอนนี้ฉันมี: select word, meaning, partofspeech from unnest(string_to_array('I think that PostgreSQL is nifty',' ')) as word from table t join dictionary d on t.word = d.wordname; สิ่งนี้ทำให้พื้นฐานของสิ่งที่ฉันหวังว่าจะทำได้สำเร็จ แต่ไม่ได้รักษาลำดับคำเดิมไว้ คำถามที่เกี่ยวข้อง: PostgreSQL ไม่ถูกต้อง () พร้อมหมายเลของค์ประกอบ

1
ฉันจะแปลงจาก Double Precision เป็น Bigint ด้วย PostgreSQL ได้อย่างไร
ฉันต้องการแปลงค่าของ Double Precision เป็น Bigint ด้วย PostgreSQL ฉันจะทำสิ่งนั้นได้อย่างไร ฉันลองแล้วto_bigint(myvalue)แต่ฟังก์ชั่นนั้นไม่มีอยู่จริง

2
วิธีการแบ่งพาร์ติชันตารางที่มีอยู่ใน postgres
ฉันต้องการพาร์ติชันตารางที่มี 1M + แถวตามช่วงวันที่ วิธีนี้ทำได้โดยไม่ต้องหยุดทำงานหรือเสี่ยงต่อการสูญเสียข้อมูล นี่คือกลยุทธ์ที่ฉันกำลังพิจารณา แต่เปิดรับข้อเสนอแนะ: ตารางที่มีอยู่คือต้นแบบและลูก ๆ สืบทอดมาจากตาราง เมื่อเวลาผ่านไปย้ายข้อมูลจากต้นแบบไปยังเด็ก แต่จะมีช่วงเวลาที่ข้อมูลบางอย่างอยู่ในตารางหลักและบางส่วนในเด็ก สร้างตารางหลักและตารางลูกใหม่ สร้างสำเนาของข้อมูลในตารางที่มีอยู่ในตารางลูก (ดังนั้นข้อมูลจะอยู่ในที่สองแห่ง) เมื่อตารางลูกมีข้อมูลล่าสุดให้เปลี่ยนส่วนแทรกทั้งหมดไปข้างหน้าเพื่อชี้ไปที่ตารางต้นแบบใหม่และลบตารางที่มีอยู่

2
วิธีการติดตั้งโมดูลเพิ่มเติม pg_trgm
ฉันต้องการทราบวิธีการติดตั้งโมดูลpg_tgrmตามที่ใช้ในรูปแบบการจัดทำดัชนีแบบ Trigram ที่ช่วยให้คุณทำรูปแบบการค้นหาที่ไม่ได้ทอดสมอบนดัชนี WHERE foo LIKE '%bar%';

1
ฐานข้อมูลพิเศษ“ postgres” มีไว้เพื่ออะไร?
ฉันมีเซิร์ฟเวอร์ PostgreSQL ที่มีฐานข้อมูลหลายตัวกำลังทำงานอยู่ ฐานข้อมูลหนึ่งถูกเรียกใช้postgresและมันอยู่ที่นั่นตั้งแต่เริ่มต้น ฉันไม่เห็นตารางใด ๆ ภายในและฉันไม่เคยใช้มันอย่างชัดเจน แต่ฉันสังเกตเห็นว่าผู้ใช้ทุกคนได้รับอนุญาตให้สร้างตารางภายในฐานข้อมูล (นี่ไม่ใช่สิ่งที่ฉันต้องการ - ฉันไม่ต้องการให้ผู้ใช้ยกเว้นผู้ดูแลระบบสร้าง ตารางใดก็ได้) ฉันรู้สึกว่ามันเป็นฐานข้อมูลชนิดพิเศษบางอย่างที่จำเป็นสำหรับการทำงานปกติของเซิร์ฟเวอร์ แต่จุดประสงค์ของมันคืออะไร ข้อมูลประเภทใด (หรืออาจ) เก็บไว้ภายใน มันเก็บข้อมูลเมตาเกี่ยวกับฐานข้อมูลอื่น ๆ (เช่น the information_schema?) สิ่งที่น่ารังเกียจเกิดขึ้นหรือไม่ถ้าฉันเพิกถอนconnectสิทธิ์ในฐานข้อมูลนี้จากสาธารณะ หรือถ้าฉันวางมันลง? ฉัน googled เป็นเวลาครึ่งชั่วโมง แต่มักจะมีสิ่งที่ไม่เกี่ยวข้องอย่างสมบูรณ์เพราะคำpostgresนี้ยังใช้สำหรับผู้ใช้postgresและ DBMS เอง
18 postgresql 

2
วิธีรับ ID ของแถวที่ขัดแย้งกันใน upsert?
ฉันมีตารางที่tagมี 2 ​​คอลัมน์: id(uuid) และname(ข้อความ) ตอนนี้ฉันต้องการแทรกแท็กใหม่ลงในตาราง แต่ถ้ามีแท็กนั้นอยู่แล้วฉันต้องการเพียงรับidบันทึกที่มีอยู่ ฉันคิดว่าฉันสามารถใช้ON CONFLICT DO NOTHINGร่วมกับRETURNING "id": INSERT INTO "tag" ("name") VALUES( 'foo' ) ON CONFLICT DO NOTHING RETURNING "id"; แต่จะส่งคืนชุดผลลัพธ์ที่ว่างเปล่าหากมีแท็กชื่อ "foo" อยู่แล้ว ฉันเปลี่ยนแบบสอบถามเพื่อใช้ส่วนDO UPDATEคำสั่งnoop : INSERT INTO "tag" ("name") VALUES( 'foo' ) ON CONFLICT ("name") DO UPDATE SET "name" = 'foo' RETURNING "id"; มันใช้งานได้ตามที่ตั้งใจ …

3
จะอัพเกรด PostgreSQL จากเวอร์ชั่น 8.4 เป็น 9.4 ได้อย่างไร
ฉันต้องการที่จะอัพเกรด PostgreSQL ของฉันจากเวอร์ชัน8.4ไป9.4 เอกสารไม่ได้เป็นอย่างชัดเจนกับผม ฉันจะสูญเสียฐานข้อมูลเก่าของฉันหรือไม่ถ้าฉันทำการอัพเกรด ฉันจะสำรองฐานข้อมูลเก่าของฉันได้อย่างไรหากฉันสูญเสียฐานข้อมูลหลังจากการอัปเกรด ฉันจะอัพเกรด psql ของฉันได้อย่างไร PostgreSQL ของฉันกำลังทำงานบนเซิร์ฟเวอร์CentOS 6.6

1
อธิบายการวิเคราะห์ไม่แสดงรายละเอียดของการสืบค้นภายในฟังก์ชั่น plpgsql
ฉันใช้ฟังก์ชั่น PL / pgSQL ใน PostgreSQL 9.3 พร้อมกับคำสั่งที่ซับซ้อนหลายอย่างภายใน create function f1() returns integer as $$ declare event tablename%ROWTYPE; .... .... begin FOR event IN SELECT * FROM tablename WHERE condition LOOP EXECUTE 'SELECT f2(event.columnname)' INTO dummy_return; END LOOP; ... INSERT INTO ... FROM a LEFT JOIN b ... LEFT JOIN …

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