Tabel pergeseran merah tidak muncul di tabel untuk skema?


12

Di Redshift, mengapa tabel saya tidak muncul di kueri berikut? Itu pasti ada, seperti yang ditunjukkan oleh kueri berikutnya yang saya jalankan. Saya ingin cara membuat daftar semua tabel untuk suatu skema:

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
Tidak terkait dengan pertanyaan Anda, tetapi berbeda bukanlah fungsi. Saya sarankan Anda menghapus tanda kurung untuk menghindari kebingungan. Setelah dipikir-pikir, Anda mungkin harus menghapusnya sendiri karena tidak mungkin ada dua tabel dengan nama yang sama dalam satu skema.
Lennart

Apa hasil dari select schemaname, tablename from pg_table_def:?
Lennart

Apakah Anda yakin nama-skema Anda adalah "db", karena sepertinya "nama basis data" ?.
Senthil

Jawaban:


13

PG_TABLE_DEF di Redshift hanya mengembalikan informasi tentang tabel yang terlihat oleh pengguna, dengan kata lain, itu hanya akan menunjukkan kepada Anda tabel yang ada dalam skema yang didefinisikan dalam variabel search_path. Jika PG_TABLE_DEF tidak mengembalikan hasil yang diharapkan, verifikasi bahwa parameter search_path diatur dengan benar untuk memasukkan skema yang relevan.

Coba ini -

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

Kemudian jalankan kueri Anda -

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

Harap edit jawaban Anda untuk memberikan lebih banyak informasi daripada 'lakukan ini'.
RLF

1

PG_TABLE_DEF hanya akan mengembalikan informasi untuk tabel dalam skema yang termasuk dalam jalur pencarian. Tautan

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.