Bảng Redshift không hiển thị trong bảng cho lược đồ?


12

Trên Redshift, tại sao bảng của tôi không hiển thị trong truy vấn sau? Nó chắc chắn tồn tại, như được hiển thị bởi truy vấn tiếp theo tôi chạy. Tôi muốn một cách để liệt kê tất cả các bảng cho một lược đồ:

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
Không liên quan đến câu hỏi của bạn, nhưng khác biệt không phải là một chức năng. Tôi đề nghị bạn loại bỏ dấu ngoặc đơn để tránh nhầm lẫn. Về ý nghĩ thứ hai, bạn cũng có thể loại bỏ nó một cách khác biệt vì không thể có hai bảng có cùng tên trong một lược đồ.
Lennart

Kết quả của : select schemaname, tablename from pg_table_def?
Lennart

Bạn có chắc chắn tên lược đồ của bạn là "db", vì nó trông giống như "tên cơ sở dữ liệu"?.
Senthil

Câu trả lời:


13

PG_TABLE_DEF trong Redshift chỉ trả về thông tin về các bảng hiển thị cho người dùng, nói cách khác, nó sẽ chỉ hiển thị cho bạn các bảng trong (các) lược đồ được xác định trong biến search_path. Nếu PG_TABLE_DEF không trả về kết quả mong đợi, hãy xác minh rằng tham số search_path được đặt chính xác để bao gồm (các) lược đồ có liên quan.

Thử đi -

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

Sau đó chạy truy vấn của bạn -

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

Vui lòng chỉnh sửa câu trả lời của bạn để cung cấp nhiều thông tin hơn 'làm điều này'.
RLF

1

PG_TABLE_DEF sẽ chỉ trả về thông tin cho các bảng trong các lược đồ được bao gồm trong đường dẫn tìm kiếm. Liên kết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.