it-swarm.asia

Bagaimana cara mendaftar semua database dan tabel menggunakan psql?

Saya mencoba mempelajari administrasi PostgreSQL dan sudah mulai belajar cara menggunakan alat baris perintah psql.

Ketika saya masuk dengan psql --username=postgres, bagaimana cara mendaftar semua database dan tabel?

Saya telah mencoba \d, d dan dS+ tetapi tidak ada yang terdaftar. Saya telah membuat dua database dan beberapa tabel dengan pgAdmin III, jadi saya tahu mereka harus terdaftar.

1243
Jonas

Harap perhatikan perintah berikut:

  • \list Atau \l: Daftarkan semua basis data
  • \dt: Daftarkan semua tabel di database saat ini menggunakan search_path Anda
  • \dt *.: Daftarkan semua tabel di database saat ini tanpa memandang search_path Anda

Anda tidak akan pernah melihat tabel di database lain, tabel ini tidak terlihat. Anda harus terhubung ke database yang benar untuk melihat tabelnya (dan objek lainnya).

Untuk berpindah basis data:

\connect database_name Atau \c database_name

Lihat manual tentang psql .

1639
Frank Heikens

Ini daftar basis data:

SELECT datname FROM pg_database
WHERE datistemplate = false;

Ini daftar tabel dalam database saat ini

SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;
381
RolandoMySQLDBA

Dalam Postgresql, perintah terminal ini mencantumkan basis data yang tersedia

[email protected]$ /bin/psql -h localhost --username=pgadmin --list

Atau perintah yang dinyatakan lebih sederhana:

psql -U pgadmin -l

Perintah-perintah itu mencetak ini di terminal:

                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges
-----------+----------+----------+-------------+-------------+-----------------------
 kurz_prod | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 pgadmin   | pgadmin  | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +
           |          |          |             |             | postgres=CTc/postgres
(5 rows)

Ini adalah basis data yang tersedia.

Dalam PSQL perintah ini mencantumkan tabel yang tersedia

Anda harus menentukan database sebelum Anda bisa daftar tabel di database itu.

[email protected]$ psql -U pgadmin -d kurz_prod

Ini membawa Anda ke terminal psql:

kurz_prod=#

Gunakan perintah \d artinya menunjukkan semua tabel, tampilan, dan urutan

kurz_prod=# \d

Ini mencetak:

           List of relations
Schema |  Name   |   Type   |  Owner
--------+---------+----------+---------
public | mytable | table    | pgadmin
public | testing | sequence | pgadmin
(2 rows)

Kemudian, untuk keluar dari terminal psql, ketik \q dan tekan enter. Atau Ctrl-D melakukan hal yang sama. Ini adalah tabel dalam database itu.

112
Eric Leschinski

\l juga merupakan singkatan untuk \list. Ada beberapa perintah slash, yang bisa Anda daftarkan dalam psql dengan menggunakan \?.

74
Derek Arnold

Untuk mendapatkan lebih banyak informasi tentang database dan daftar tabel, Anda dapat melakukan:

\l+ untuk membuat daftar basis data

                                                                    List of databases
    Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access privileges   |  Size   | Tablespace |                Description
------------+----------+----------+-------------+-------------+-----------------------+---------+------------+--------------------------------------------
 pgbench    | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 29 MB   | pg_default |
 postgres   | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 6073 kB | pg_default | default administrative connection database
 slonmaster | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 1401 MB | movespace  |
 slonslave  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 32 MB   | pg_default |
 template0  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5785 kB | pg_default | unmodifiable empty database
            |          |          |             |             | postgres=CTc/postgres |         |            |
 template1  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 | =c/postgres          +| 5985 kB | pg_default | default template for new databases
            |          |          |             |             | postgres=CTc/postgres |         |            |
 test       | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |                       | 13 MB   | pg_default |
(7 rows)

dan

\d+ untuk mendaftar semua tabel dalam skema search_path saat ini dalam database saat ini.

test=# \dn+ --list schemas
                          List of schemas
  Name  |  Owner   |  Access privileges   |      Description       
--------+----------+----------------------+------------------------
 public | postgres | postgres=UC/postgres+| standard public schema
        |          | =UC/postgres         | 
schema1 | postgres | postgres=UC/postgres+| 
        |          | =UC/postgres         | 
(2 row)

test=# set search_path to schema1, public;
SET
test=# \d+
                                  List of relations
     Schema  |      Name       | Type  |    Owner     |    Size    | Description
    ---------+-----------------+-------+--------------+------------+-------------
     public  | all_units       | table | postgres     | 0 bytes    |
     public  | asset           | table | postgres     | 16 kB      |
     public  | asset_attribute | table | postgres     | 8192 bytes |
     public  | food            | table | postgres     | 48 kB      |
     public  | name_log        | table | postgres     | 8192 bytes |
     public  | outable         | table | ordinaryuser | 0 bytes    |
     public  | outable2        | table | ordinaryuser | 0 bytes    |
     public  | test            | table | postgres     | 16 kB      |
     public  | usr             | table | postgres     | 5008 kB    |
     schema1 | t1              | table | postgres     | 0 bytes    |
    (10 rows)
36
Soni Harriz

Dari pg_Admin Anda cukup menjalankan yang berikut ini di database Anda saat ini dan itu akan mendapatkan semua tabel untuk skema yang ditentukan:

SELECT * 
FROM information_schema.tables 
WHERE table_type = 'BASE TABLE' 
    AND table_schema = 'public' 
ORDER BY table_type, table_name

Ini akan memberi Anda daftar semua tabel permanen (umumnya tabel yang Anda cari). Anda bisa mendapatkan hanya nama tabel jika Anda mengubah * wildcard menjadi hanya table_name. Masyarakat table_schema adalah skema default untuk sebagian besar basis data kecuali admin Anda telah membuat skema baru.

33
Larry W

Ada kemungkinan bahwa Anda telah memasukkan tabel ke dalam skema yang tidak ada di jalur pencarian Anda, atau default, yaitu publik dan sehingga tabel tidak akan muncul menggunakan\dt. Jika Anda menggunakan skema yang disebut, katakanlah, data, Anda dapat memperbaikinya dengan menjalankan,

alter database <databasename> set search_path=data, public;

Keluar dan masukkan kembali psql dan sekarang\dt akan menunjukkan kepada Anda tabel dalam data skema juga.

19
John Powell