在PostgreSQL中显示表格

时间:2009-04-20 19:07:39

标签: postgresql

PostgreSQL中等同于show tables(来自MySQL)的内容是什么?

24 个答案:

答案 0 :(得分:2217)

psql命令行界面中,显示当前架构中的所有表:

\dt

以编程方式(当然也可以来自psql界面):

SELECT * FROM pg_catalog.pg_tables;

系统表位于pg_catalog数据库中。

答案 1 :(得分:169)

以超级用户身份登录:

sudo -u postgres psql

您可以按\l命令列出所有数据库和用户(按\?列出其他命令)。

现在,如果您想查看其他数据库,可以通过\c \c template1命令更改用户/数据库,例如\c postgres postgres\d并使用\dt\dS或{{1}}查看表/视图/等。

答案 2 :(得分:107)

(完整性)

您还可以查询(SQL标准)information schema

SELECT
    table_schema || '.' || table_name
FROM
    information_schema.tables
WHERE
    table_type = 'BASE TABLE'
AND
    table_schema NOT IN ('pg_catalog', 'information_schema');

答案 3 :(得分:62)

您可以使用PostgreSQL的交互式终端Psql在PostgreSQL中显示表格。

<强> 1。启动Psql

通常您可以运行以下命令进入psql:

psql DBNAME USERNAME

例如,psql template1 postgres

您可能遇到的一种情况是:假设您以root身份登录,并且您不记得数据库名称。您可以通过运行:

首先输入Psql
sudo -u postgres psql

在某些系统中,sudo命令不可用,您可以改为运行以下命令:

psql -U postgres
psql --username=postgres

<强> 2。显示表格

现在在Psql中你可以运行如下命令:

  1. \?列出所有命令
  2. \l列出数据库
  3. \conninfo显示有关当前连接的信息
  4. \c [DBNAME]连接到新数据库,例如\c template1
  5. \dt列出公共架构的表格
  6. \dt <schema-name>.*列出某些架构的表格,例如\dt public.*
  7. \dt *.*列出所有架构的表格
  8. 然后您可以运行SQL语句,例如SELECT * FROM my_table;(注意:语句必须以分号;终止)
  9. \q退出psql

答案 4 :(得分:50)

  1. 首次以postgres用户身份登录:

    sudo su - postgres

  2. 连接到所需的数据库:psql -d databaseName

  3. \dt将返回您所连接的数据库中所有表的列表。

答案 5 :(得分:36)

使用-E标志运行psql将回显内部使用的查询以实现 \ dt和类似:

sudo -u postgres psql -E

postgres=# \dt       
********* QUERY **********
SELECT n.nspname as "Schema",
c.relname as "Name", 
CASE c.relkind WHEN 'r' THEN 'table' WHEN 'v' THEN 'view' WHEN 'i' THEN 'index' WHEN 'S' THEN 'sequence' WHEN 's' THEN 'special' END as "Type",
pg_catalog.pg_get_userbyid(c.relowner) as "Owner"
FROM pg_catalog.pg_class c
    LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
    AND n.nspname <> 'pg_catalog'
    AND n.nspname <> 'information_schema'
    AND n.nspname !~ '^pg_toast'
AND pg_catalog.pg_table_is_visible(c.oid)
ORDER BY 1,2;        
**************************

答案 6 :(得分:27)

以超级用户身份登录,以便您可以检查所有数据库及其模式:-

sudo su - postgres

然后我们可以使用以下命令进入postgresql shell:-

psql

您现在可以使用以下命令检查所有数据库列表:-

\l

如果您还要检查数据库的大小,请使用:-

\l+

q返回。

找到数据库后,您可以使用以下命令连接到该数据库:-

\c database_name

连接后,您可以通过以下方式检查数据库表或架构:-

\d

现在返回到shell使用:-

q

现在进一步查看特定表使用的详细信息:-

\d table_name

要返回到postgresql_shell,请按\q

要返回终端,请按exit

答案 7 :(得分:24)

如果您只想查看自己创建的表格列表,可以只说:

\dt

但我们还有PATTERN,它可以帮助您自定义要显示的表格。要显示包含pg_catalog架构的所有内容,您可以添加*

\dt *

如果你这样做:\?

  

\ dt [S +] [PATTERN]列表

答案 8 :(得分:21)

仅使用查看表格

$("div").on("click", function(event) {
if(event.target.nodeName.toLowerCase() === 'a')
   return false;
else{
   var $checkbox = $(this).find(":checkbox");
   $checkbox.prop("checked", !$checkbox[0].checked);  
 }
});

如果想查看架构表

=> \dt

如果您想查看特定的架构表

=>\dt+

答案 9 :(得分:21)

首先使用以下命令连接数据库

\c database_name

您会看到此消息 - You are now connected to database database_name。然后他们运行以下命令

SELECT * FROM table_name;

在database_name和table_name中,只需使用您的数据库和表名更新

答案 10 :(得分:15)

如果您在PostgreSQL中使用pgAdmin4,您可以使用它来显示数据库中的表:

protected void onPostExecute(Boolean result) {
            dialog.dismiss();

            for (int i = 0; i < locations.size(); i++)
            {

            Double latitude = Double.valueOf(locations.get(i).latitude);
            Double longitude = Double.valueOf(locations.get(i).longitude);

            LatLng lng = new LatLng(latitude,longitude);
            map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
            map.addMarker(new MarkerOptions()
            .position(lng)
            .title("Test")
            .icon(BitmapDescriptorFactory.fromResource(getResources().getIdentifier("Title", "drawable", getPackageName()))));
            } 

        }

答案 11 :(得分:14)

请注意,仅\dt会列出您正在使用的数据库的公开架构中的表格。我喜欢将表格保存在不同的模式中,因此接受的答案对我没有用。

要列出特定架构中的所有表 ,我需要:

1)连接到所需的数据库:

psql mydb

2)在\dt命令之后指定我想要查看表的模式名称,如下所示:

\dt myschema.*

这向我展示了我感兴趣的结果:

               List of relations
 Schema   |       Name      | Type  |  Owner   
----------+-----------------+-------+----------
 myschema | users           | table | postgres
 myschema | activity        | table | postgres
 myschema | roles           | table | postgres

答案 12 :(得分:9)

select 
  * 
from 
  pg_catalog.pg_tables 
where 
  schemaname != 'information_schema' 
  and schemaname != 'pg_catalog';

答案 13 :(得分:8)

\ dt(no * required) - 将列出已连接到的现有数据库的所有表。还有用的注意事项:

\ d [table_name] - 将显示给定表的所有列,包括类型信息,引用和键约束。

答案 14 :(得分:6)

您可以使用\dt列出当前数据库中的表。

Fwiw,\d tablename将显示有关给定表的详细信息,例如MySQL中的show columns from tablename,但有更多信息。

答案 15 :(得分:5)

使用 psql :\ dt

或者:

SELECT c.relname AS Tables_in FROM pg_catalog.pg_class c
        LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE pg_catalog.pg_table_is_visible(c.oid)
        AND c.relkind = 'r'
        AND relname NOT LIKE 'pg_%'
ORDER BY 1

答案 16 :(得分:3)

首先,您必须连接数据库,如

我的数据库是 ubuntu

使用此命令连接

 \c ubuntu

此消息将显示

  

&#34;您现在已连接到数据库&#34; ubuntu&#34;作为用户&#34; postgres&#34;。&#34;

现在

运行此命令以显示其中的所有表

\d+

答案 17 :(得分:1)

\ dt将列出表格,“\ pset pager off”会在同一窗口中显示它们,而不会切换到单独的窗口。喜欢dbshel​​l中的那个特征。

答案 18 :(得分:1)

此SQL查询可与大多数PostgreSQL版本一起使用,并且非常简单。

select table_name from information_schema.tables where table_schema='public' ;

答案 19 :(得分:1)

在我看来,在命令行中列出所有表的最直接方法是:

psql -a -U <user> -p <port> -h <server> -c "\dt"

对于给定的数据库,只需添加数据库名称:

psql -a -U <user> -p <port> -h <server> -c "\dt" <database_name>

它在Linux和Windows上均可使用。

答案 20 :(得分:0)

  1. 登录后在PostgreSQL命令行界面中,键入以下命令以连接所需的数据库。

        \c [database_name]
    

然后您将看到此消息You are now connected to database "[database_name]"

  1. 键入以下命令以列出所有表。

        \dt
    

答案 21 :(得分:0)

快速上线

# just list all the postgres tables sorted in the terminal
db='my_db_name'
clear;psql -d $db -t -c '\dt'|cut -c 11-|perl -ne 's/^([a-z_0-9]*)( )(.*)/$1/; print'

答案 22 :(得分:0)

要在psql中查看外部表,请运行\dE

答案 23 :(得分:-2)

首先,您可以使用mac上的postgre.app或使用postico连接您的postgres数据库。 运行以下命令:

psql -h localhost -p port_number -d database_name -U user_name -W

然后输入密码,这应该可以访问您的数据库

相关问题