Answers:
请注意以下命令:
\list
或\l
:列出所有数据库\dt
:列出当前数据库中的所有表您将永远不会看到其他数据库中的表,这些表是不可见的。您必须连接到正确的数据库才能查看其表(和其他对象)。
要切换数据库:
\connect database_name
要么 \c database_name
请参阅有关psql的手册。
\c db_name
用来连接到某个数据库。
\dt
似乎未列出当前数据库中的所有表(似乎排除了search_path
至少在9.2 中未找到的表)
\dt *.
将列出所有模式中的所有表,而无需修改搜索路径。
psql -U username -l
但不适用于斜杠版本。
这列出了数据库:
SELECT datname FROM pg_database
WHERE datistemplate = false;
这列出了当前数据库中的表
SELECT table_schema,table_name
FROM information_schema.tables
ORDER BY table_schema,table_name;
WHERE table_schema = 'public'
因为我只想删除自定义表。
el@defiant$ /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)
这些是可用的数据库。
您必须先指定数据库,然后才能列出该数据库中的表。
el@defiant$ 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
做同样的事情。这些是该数据库中的表。
\d[S+] list tables, views, and sequences
\l
也是的简写\list
。有很多斜杠命令,您可以使用来在psql中列出\?
。
要获取有关数据库和表列表的更多信息,您可以执行以下操作:
\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)
在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
除非您的管理员设置了新的架构,否则public 是大多数数据库的默认架构。
您可能已经将表插入了不在您的搜索路径或默认路径(即公共)中的架构中,因此使用\ dt不会显示这些表。如果您使用称为数据的架构,则可以通过运行,
alter database <databasename> set search_path=data, public;
退出并重新输入psql,现在\ dt也会向您显示模式数据中的表。
set search_path=data, public;
也可以解决问题:)
psql -l