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

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

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) ข้อ จำกัด ประเภทนี้เป็นไปได้หรือไม่

3
ประเภทคอลัมน์ UUID ที่มีประสิทธิภาพที่สุดคืออะไร
สำหรับการจัดเก็บ UUID 128 บิตมีตัวเลือกการจัดเก็บหลายตัว: คอลัมน์ไบต์ [16] สองคอลัมน์ใหญ่ / ยาว (64 บิต) คอลัมน์ CHAR (36) - เลขฐานสิบหก 32 หลัก + 4 ขีด คอลัมน์เฉพาะฐานข้อมูล UUID หาก db สนับสนุน จากมุมมองของการจัดทำดัชนีซึ่งมีประสิทธิภาพมากที่สุด? หาก db ไม่รองรับ uuid ชนิดเฉพาะที่ 1, 2, 3 เป็นตัวเลือกที่ดีที่สุด?

1
การแก้ไขโครงสร้างตารางเพื่อหลีกเลี่ยง `ข้อผิดพลาด: ค่าคีย์ที่ซ้ำกันละเมิดข้อ จำกัด ที่ไม่ซ้ำกัน '
ฉันมีตารางที่สร้างขึ้นด้วยวิธีนี้: -- -- Table: #__content -- CREATE TABLE "jos_content" ( "id" serial NOT NULL, "asset_id" bigint DEFAULT 0 NOT NULL, ... "xreference" varchar(50) DEFAULT '' NOT NULL, PRIMARY KEY ("id") ); ต่อมาบางแถวจะถูกแทรกโดยระบุรหัส: INSERT INTO "jos_content" VALUES (1,36,'About',...) ที่จุดภายหลังบางระเบียนจะถูกแทรกโดยไม่ต้อง ID Error: duplicate key value violates unique constraintและพวกเขาล้มเหลวกับข้อผิดพลาด: เห็นได้ชัดว่า id ได้รับการกำหนดเป็นลำดับ: การแทรกที่ล้มเหลวแต่ละครั้งจะเพิ่มตัวชี้ในลำดับจนกระทั่งมันเพิ่มขึ้นเป็นค่าที่ไม่มีอยู่อีกต่อไปและการสืบค้นสำเร็จ …

2
ส่งออกตาราง Postgres ระยะไกลไปยังไฟล์ CSV บนเครื่องท้องถิ่น
ฉันเข้าถึงฐานข้อมูลบนเซิร์ฟเวอร์ระยะไกลแบบอ่านอย่างเดียว ดังนั้นฉันสามารถรัน: COPY products TO '/tmp/products.csv' DELIMITER ','; แต่บนเซิร์ฟเวอร์นั้นฉันไม่มีสิทธิ์สร้าง / บันทึกไฟล์ดังนั้นฉันต้องทำสิ่งนี้กับเครื่องของฉัน เมื่อฉันเชื่อมต่อกับฐานข้อมูลระยะไกลฉันจะรันคำสั่งเพื่อบันทึกไฟล์บนเครื่องท้องถิ่นของฉันแทนที่จะเป็นเซิร์ฟเวอร์ระยะไกลได้อย่างไร หรือฉันจะรันคำสั่ง Linux เพื่อเชื่อมต่อกับฐานข้อมูลระยะไกลดำเนินการค้นหาและบันทึกผลลัพธ์เป็นไฟล์ไปยังเครื่องท้องถิ่นของฉันได้อย่างไร
15 postgresql  export  csv  copy 

1
จะใช้การเข้ารหัส aes ใน PostgreSQL ได้อย่างไร
ฉันลองเข้ารหัส aes โดยใช้ข้อความต่อไปนี้: SELECT encrypt('test', 'key', 'aes'); ซึ่งใช้งานได้ แต่ฉันไม่สามารถถอดรหัสค่าได้ ฉันใส่มันลงในเขตข้อมูลชนิดข้อมูลไบต์แต่ฉันไม่แน่ใจว่าเป็นวิธีที่ถูกต้องหรือไม่ SELECT decrypt(pw, 'key', 'aes') FROM table WHERE ID = 1; ทำให้ฉันมีข้อผิดพลาด ข้อผิดพลาด: ถอดรหัสฟังก์ชัน (bytea, ไม่ทราบ, ไม่ทราบ) ไม่มีอยู่ บรรทัดที่ 1: เลือกตัวถอดรหัส (pw, 'key', 'aes') จาก tabelle WHERE ID = 7; ^ คำแนะนำ: ไม่มีฟังก์ชันที่ตรงกับชื่อและประเภทอาร์กิวเมนต์ที่กำหนด คุณอาจจำเป็นต้องเพิ่ม casts ประเภทชัดเจน นั่นหมายความว่าการเข้ารหัส () เป็นฟังก์ชั่นที่มีอยู่ แต่ไม่ถอดรหัส () …

2
วิธีสลับฟิลด์บูลีนด้วย sql ใน postgresql ได้อย่างไร
มีเขตข้อมูลshowซึ่งเป็นbooleanประเภทใน postgesql ฉันต้องการเขียน sql เพื่ออัพเดตตารางนั้นเพื่อสลับค่าของการแสดง ถ้ามันtrueจะกลายเป็นfalseถ้ามันมันจะกลายเป็นfalsetrue เป็นไปได้ไหม?
15 postgresql 

3
แยกคอลัมน์เดือนและปีหรือวันที่ที่มีวันตั้งเป็น 1 เสมอ
ฉันกำลังสร้างฐานข้อมูลด้วย Postgres ซึ่งจะมีการจัดกลุ่มของสิ่งต่าง ๆ มากมายโดยmonthและyearไม่เคยทำมาdateก่อน ฉันสามารถสร้างจำนวนเต็มmonthและyearคอลัมน์และใช้สิ่งเหล่านั้น หรือฉันอาจมีmonth_yearคอลัมน์และตั้งค่าเป็นday1 เสมอ อดีตดูเหมือนจะง่ายขึ้นเล็กน้อยและชัดเจนขึ้นถ้ามีคนดูข้อมูล แต่หลังนั้นดีในการใช้ประเภทที่เหมาะสม

1
จุดตรวจสอบเกิดขึ้นบ่อยเกินไประหว่าง pg_restore
ภายใต้ PostgreSQL 9.2.2 (Windows 32 บิต) ฉันมีpg_restoreคำสั่งที่ส่งผลให้เกิดคำเตือนเกี่ยวกับความถี่ของจุดตรวจสอบอย่างเป็นระบบเช่น: LOG: checkpoints are occurring too frequently (17 seconds apart) HINT: Consider increasing the configuration parameter "checkpoint_segments". ฐานข้อมูลมีขนาดประมาณ 3.3 Gb โดยมี 112 tables / 160 views และเรียกคืนได้ในเวลาประมาณ 14 นาที เป็นเรื่องปกติpg_restoreหรือไม่ที่จะเกิดขึ้นในช่วง a ?

2
เคียวรีระยะห่างอย่างรวดเร็วขัดขวางในระดับสูงกว่า
ฉันมีฐานข้อมูลขนาดใหญ่ (แถว 16M) ที่มีแฮชการรับรู้ภาพ ฉันต้องการที่จะสามารถค้นหาแถวตามระยะทาง hammingในกรอบเวลาที่เหมาะสม ในปัจจุบันเท่าที่ฉันเข้าใจปัญหาอย่างถูกต้องแล้วฉันคิดว่าตัวเลือกที่ดีที่สุดในที่นี้คือการติดตั้ง SP-GiST แบบกำหนดเองที่ใช้BK-Treeแต่ดูเหมือนว่าจะใช้งานได้มากและฉันก็ยังคลุมเครือในทางปฏิบัติ รายละเอียดของการปรับใช้ดัชนีที่กำหนดเองอย่างเหมาะสม การคำนวณระยะทาง Hamming คือเวไนยพอและผมทำรู้ C แม้ว่า โดยพื้นฐานแล้ววิธีการที่เหมาะสมในที่นี้คืออะไร? ฉันต้องสามารถสอบถามการจับคู่ภายในระยะทางแก้ไขที่แน่นอนของแฮช ตามที่ผมเข้าใจมัน Levenshtein ระยะทางกับสตริงความยาวเท่ากันเป็นหน้าที่ hamming ระยะเพื่อให้มีอย่างน้อยบางส่วนสนับสนุนที่มีอยู่สำหรับสิ่งที่ฉันต้องการแม้ว่าจะไม่มีวิธีการที่ชัดเจนในการสร้างดัชนีจากมัน (จำค่าที่ผมสอบถาม การเปลี่ยนแปลงฉันไม่สามารถคำนวณระยะทางจากค่าคงที่ล่วงหน้าได้เนื่องจากจะมีประโยชน์สำหรับค่านั้นเท่านั้น แฮชปัจจุบันถูกเก็บเป็นสตริง 64- ถ่านที่มีการเข้ารหัส ASCII แบบไบนารีของแฮช (เช่น "10010101 ... ") แต่ฉันสามารถแปลงให้เป็น int64 ได้อย่างง่ายดาย ปัญหาจริงคือฉันต้องสามารถสืบค้นได้ค่อนข้างเร็ว ดูเหมือนว่าจะเป็นไปได้ที่จะบรรลุบางสิ่งบางอย่างตามแนวของสิ่งที่ฉันต้องการpg_trgmแต่ฉันค่อนข้างชัดเจนว่าการจับคู่ mechamism ของ trigram ทำงานอย่างไร (โดยเฉพาะการวัดความคล้ายคลึงกันที่ส่งกลับมาเป็นตัวแทนจริง ๆ )ชนิดของระยะทางแก้ไข) ประสิทธิภาพการแทรกไม่สำคัญ (ราคาแพงมากในการคำนวณแฮชสำหรับแต่ละแถว) ดังนั้นฉันจึงสนใจเกี่ยวกับการค้นหาเป็นหลัก

1
log_min_duration_statement การตั้งค่าจะถูกละเว้น
ฉันกำลังทำงานPostgresql 9.1บน Ubuntu รุ่น Postgresql ที่แน่นอน9.1+129ubuntu1เป็นตัวจัดการแพคเกจของฉันแสดง ฉันมี 2 ฐานข้อมูลที่ใช้งานอยู่และถูกใช้จากเซิร์ฟเวอร์ระยะไกล ฉันต้องการบันทึกการสืบค้นที่มีเวลาดำเนินการนาน ดังนั้นฉันจึงตั้งค่าพารามิเตอร์ต่อไปนี้ใน/etc/postgresql/9.1/main/postgresql.confไฟล์ log_min_duration_statement = 10000 log_statement = 'mod' ดังนั้น Postgresql จะบันทึกการสืบค้นที่ใช้เวลานานกว่า 10 วินาที แต่เมื่อฉันreloadกำหนดค่า postgres, Postgresql เริ่มบันทึกทุกแบบสอบถามที่เหมาะกับlog_statementค่า ที่ฉันตั้งค่าระยะเวลาเป็น 100 วินาทีเพื่อให้แน่ใจ log_min_duration_statement = 100000 แต่ Postgresql จะทำการบันทึกทุกข้อความค้นหาที่ตรงกับlog_statementค่าโดยไม่คำนึงถึงlog_min_duration_statementคุณค่า การตั้งค่าlog_statementที่จะnoneลำบากในการเข้าสู่ระบบหยุด มีบางอย่างที่ฉันพลาดเกี่ยวกับการกำหนดค่าหรือไม่

4
การรับ SELECT เพื่อส่งคืนค่าคงที่แม้ว่าแถวศูนย์ตรงกัน
พิจารณาข้อความสั่งที่เลือกนี้: SELECT *, 1 AS query_id FROM players WHERE username='foobar'; มันจะส่งคืนคอลัมน์ที่query_idมีค่า1พร้อมกับคอลัมน์อื่น ๆ ของผู้เล่น วิธีการหนึ่งที่จะทำให้ผลตอบแทน SQL ข้างต้นอย่างน้อยquery_idของ1แม้ว่าเลือกพบว่าไม่มีแถวจับคู่? BTW คือ PostgreSQL 8.4

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
ลบแถวที่ไม่ได้อ้างอิงในตารางอื่น
ฉันมีสองตารางในฐานข้อมูล PostgreSQL 9.3 ตารางที่link_replyมีคีย์ต่างประเทศชื่อชี้ไปที่โต๊ะwhich_grouplink_group ฉันต้องการลบแถวทั้งหมดจากlink_groupที่ไม่มีแถวที่เกี่ยวข้องlink_replyอยู่ ฟังดูธรรมดาพอ แต่ฉันก็ดิ้นรนกับมัน มันจะเป็นอะไรที่เรียบง่ายแบบนี้ (ไม่ทำงาน)? DELETE FROM link_group WHERE link_reply = NULL;

1
การจัดการกับพื้นที่ดิสก์เต็มใน postgresql
ฉันมี Django เว็บแอปพลิเคชันที่มีแบ็กเอนด์ postgresql 9.3.10 (อยู่ในระบบปฏิบัติการ Linux) ฉันพบข้อผิดพลาดของดิสก์เต็มแม้ว่าฉันจะพยายามตัดทอนตารางฉันก็พบข้อผิดพลาดในการเรียงลำดับ: ERROR: could not extend file "base/30137/33186048": No space left on device HINT: Check free disk space. ฉันไม่สามารถเพิ่มพื้นที่ดิสก์เพิ่มเติมลงในเซิร์ฟเวอร์ได้อย่างง่ายดายและฉันจะไม่ลบสิ่งใดใน VM นี้ อย่างไรก็ตามมีหลายตารางที่เป็นตัวเลือกสำหรับการตัดทอน แต่ดูเหมือนว่าฉันไม่สามารถตัดทอนได้ในตอนนี้ ใครช่วยแนะนำฉันเกี่ยวกับสิ่งที่ฉันสามารถทำได้ที่นี่? นี่คือการตีเซิร์ฟเวอร์การผลิตของฉันอย่างหนักและฉันเป็น DBA โดยไม่ได้ตั้งใจที่นี่จึงนิ่งงันโดยสิ้นเชิง

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