ตาราง Redshift ไม่แสดงในตารางสำหรับสคีมาหรือไม่


12

ใน Redshift เหตุใดตารางของฉันจึงไม่ปรากฏในแบบสอบถามต่อไปนี้ มันมีอยู่จริงดังที่แสดงโดยเคียวรีถัดไปที่ฉันรัน ฉันต้องการวิธีในรายการตารางทั้งหมดสำหรับสคีมา:

mydb=# select distinct(tablename) from pg_table_def where schemaname = 'db';
 tablename 
-----------
(0 rows)

mydb=# \d db.some_table
                    Table "db.some_table"
     Column      |            Type             | Modifiers 
-----------------+-----------------------------+-----------
...correct info shows up here...
...but nothing showed up above?

3
ไม่เกี่ยวข้องกับคำถามของคุณ แต่ฟังก์ชั่นไม่ชัดเจน ฉันแนะนำให้คุณลบวงเล็บเพื่อหลีกเลี่ยงความสับสน ในความคิดที่สองคุณอาจลบตัวมันเองอย่างชัดเจนเนื่องจากไม่มีตารางสองตารางที่มีชื่อเดียวกันในหนึ่งสคีมา
Lennart

ผลลัพธ์ของselect schemaname, tablename from pg_table_defอะไร:
Lennart

คุณแน่ใจหรือว่าชื่อสกีมาของคุณคือ "db" เพราะดูเหมือนว่า "ชื่อฐานข้อมูล"
Senthil

คำตอบ:


13

PG_TABLE_DEFใน Redshift จะส่งกลับเฉพาะข้อมูลเกี่ยวกับตารางที่ผู้ใช้มองเห็นได้เท่านั้นกล่าวอีกนัยหนึ่งมันจะแสดงเฉพาะตารางที่อยู่ใน schema ที่กำหนดไว้ใน search_path ตัวแปร หาก PG_TABLE_DEF ไม่ส่งคืนผลลัพธ์ที่ต้องการให้ตรวจสอบว่ามีการตั้งค่าพารามิเตอร์ search_pathอย่างถูกต้องเพื่อรวมสคีมาที่เกี่ยวข้อง

ลองนี้ -

mydb=# set search_path="$user",db;

จากนั้นเรียกใช้แบบสอบถามของคุณ -

mydb=# select tablename from pg_table_def where schemaname = 'db';

โปรดแก้ไขคำตอบของคุณเพื่อให้ข้อมูลมากกว่า 'ทำสิ่งนี้'
RLF

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