it-swarm.asia

كيف أسرد جميع قواعد البيانات والجداول باستخدام psql؟

أحاول تعلم إدارة PostgreSQL وبدأت في تعلم كيفية استخدام أداة سطر الأوامر psql.

عندما أسجل الدخول بـ psql --username=postgres كيف أسرد جميع قواعد البيانات والجداول؟

لقد حاولت \d ، d و dS+ ولكن لا شيء مدرج. لقد قمت بإنشاء قاعدتي بيانات وعدد قليل من الجداول باستخدام pgAdmin III ، لذلك أعلم أنه يجب إدراجها.

1243
Jonas

يرجى ملاحظة الأوامر التالية:

  • \list أو \l: سرد كافة قواعد البيانات
  • \dt: سرد كافة الجداول في قاعدة البيانات الحالية باستخدام search_path
  • \dt *.: سرد كافة الجداول في قاعدة البيانات الحالية بغض النظر عن search_path

لن ترى الجداول في قواعد البيانات الأخرى ، فهذه الجداول غير مرئية. يجب عليك الاتصال بقاعدة البيانات الصحيحة لرؤية جداولها (والكائنات الأخرى).

لتبديل قواعد البيانات:

\connect database_name أو \c database_name

راجع دليل حول psql .

1639
Frank Heikens

يسرد هذا قواعد البيانات:

SELECT datname FROM pg_database
WHERE datistemplate = false;

يسرد هذا الجداول في قاعدة البيانات الحالية

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

في Postgresql ، تسرد هذه الأوامر الطرفية قواعد البيانات المتاحة

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

أو الأمر ببساطة أكثر:

psql -U pgadmin -l

هذه الأوامر تطبع هذا على الجهاز:

                                  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)

هذه هي قواعد البيانات المتاحة.

تسرد هذه الأوامر في PSQL الجداول المتاحة

يجب عليك تحديد قاعدة بيانات قبل أن تتمكن من سرد الجداول في قاعدة البيانات هذه.

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

هذا ينقلك إلى محطة psql:

kurz_prod=#

استخدم الأمر \d بمعنى إظهار كافة الجداول والمشاهدات والتسلسلات

kurz_prod=# \d

يطبع:

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

ثم ، للخروج من محطة psql ، اكتب \q واضغط على Enter. أو Ctrl-D يفعل نفس الشيء. هذه هي الجداول في قاعدة البيانات هذه.

112
Eric Leschinski

\l هو أيضًا اختصار لـ \list. هناك عدد قليل من أوامر الخط المائل ، والتي يمكنك إدراجها في psql باستخدام \?.

74
Derek Arnold

للحصول على مزيد من المعلومات حول قاعدة البيانات وقائمة الجداول ، يمكنك القيام بما يلي:

\l+ لسرد قواعد البيانات

                                                                    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)

و

\d+ لسرد جميع الجداول في مخطط search_path الحالي في قاعدة البيانات الحالية.

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

من pg_Admin ، يمكنك ببساطة تشغيل ما يلي في قاعدة بياناتك الحالية وستحصل على جميع الجداول للمخطط المحدد:

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

سيوفر لك هذا قائمة بجميع الجداول الدائمة (بشكل عام الجداول التي تبحث عنها). يمكنك الحصول على أسماء الجداول فقط إذا قمت بتغيير * حرف البدل فقط table_name. الجمهور table_schema هو المخطط الافتراضي لمعظم قواعد البيانات ما لم يقم المسؤول بإعداد مخطط جديد.

33
Larry W

من المحتمل أنك قمت بإدراج الجداول في مخطط غير موجود في مسار البحث الخاص بك ، أو الافتراضي ، أي عام ، وبالتالي لن تظهر الجداول باستخدام\dt. إذا كنت تستخدم مخططًا يسمى ، على سبيل المثال ، البيانات ، يمكنك إصلاح هذا عن طريق التشغيل ،

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

الخروج وإعادة إدخال psql والآن\dt سوف تظهر لك الجداول في بيانات المخطط أيضا.

19
John Powell