PostgreSQL“描述表”
如何使用 psql 命令在 PostgreSQL 中执行相当于 Oracle 的 DESCRIBE TABLE
的操作?
How do you perform the equivalent of Oracle's DESCRIBE TABLE
in PostgreSQL with psql command?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(25)
尝试一下(在
psql
命令行工具中):请参阅 手册了解更多信息。
Try this (in the
psql
command-line tool):See the manual for more info.
除了 PostgreSQL 方式(\d 'something' 或 \dt 'table' 或 \ds 'sequence' 等)
SQL 标准方式,如图 此处:
许多数据库引擎都支持它。
In addition to the PostgreSQL way (\d 'something' or \dt 'table' or \ds 'sequence' and so on)
The SQL standard way, as shown here:
It's supported by many db engines.
如果您想通过查询而不是 psql 获取它,您可以查询目录模式。 这是一个执行此操作的复杂查询:
它非常复杂,但它确实向您展示了 PostgreSQL 系统目录的强大功能和灵活性,并且应该让您走上掌握 pg_catalog 的道路;-)。 请务必更改查询中的 %s。 第一个是架构,第二个是表名。
If you want to obtain it from query instead of psql, you can query the catalog schema. Here's a complex query that does that:
It's pretty complex but it does show you the power and flexibility of the PostgreSQL system catalog and should get you on your way to pg_catalog mastery ;-). Be sure to change out the %s's in the query. The first is Schema and the second is the table name.
您可以使用 psql 斜杠命令来执行此操作:
它也适用于其他对象:
来源:常见问题解答。组织
You can do that with a psql slash command:
It also works for other objects:
Source: faqs.org
这应该是解决方案:
This should be the solution:
DESCRIBE TABLE
的 psql 等效项是\d table
。有关更多详细信息,请参阅 PostgreSQL 手册的 psql 部分。
The psql equivalent of
DESCRIBE TABLE
is\d table
.See the psql portion of the PostgreSQL manual for more details.
您可以执行
\d *搜索模式*
带星号来查找与您感兴趣的搜索模式匹配的表。You may do a
\d *search pattern *
with asterisks to find tables that match the search pattern you're interested in.除了您已经找到的命令行
\d+
之外,您还可以使用 information-schema 使用 info_schema 查找列数据.列In addition to the command line
\d+ <table_name>
you already found, you could also use the information-schema to look up the column data, using info_schema.columns使用以下 SQL 语句
如果替换 tbl_name 和 col_name,它将显示您要查找的特定列的数据类型。
Use the following SQL statement
If you replace tbl_name and col_name, it displays data type of the particular coloumn that you looking for.
你可以使用这个:
You can use this :
在 MySQL 中, DESCRIBE table_name
在 PostgreSQL 中, \d table_name
或者,您可以使用这个长命令:
In MySQL , DESCRIBE table_name
In PostgreSQL , \d table_name
Or , you can use this long command:
这种查询的变体(如其他答案中所解释的)对我有用。
这里有详细描述:
http://www.postgresqltutorial.com/postgresql-describe-table/
This variation of the query (as explained in other answers) worked for me.
It's described here in details:
http://www.postgresqltutorial.com/postgresql-describe-table/
为了改进其他答案的 SQL 查询(这太棒了!),这里是一个修改后的查询。 它还包括约束名称、继承信息和分解为各个组成部分的数据类型(类型、长度、精度、小数位数)。 它还过滤掉已删除的列(仍存在于数据库中)。
To improve on the other answer's SQL query (which is great!), here is a revised query. It also includes constraint names, inheritance information, and a data types broken into it's constituent parts (type, length, precision, scale). It also filters out columns that have been dropped (which still exist in the database).
在postgres中,\d用于描述表结构。
例如
\d schema_name.table_name
该命令将为您提供表的基本信息,例如列、类型和修饰符。
如果您想了解有关表使用的更多信息,
这将为您提供额外的信息,例如存储、统计目标和描述
In postgres \d is used to describe the table structure.
e.g.
\d schema_name.table_name
this command will provide you the basic info of table such as, columns, type and modifiers.
If you want more info about table use
this will give you extra info such as, storage, stats target and description
当表名以大写字母开头时,您应该将表名放在引号中。
示例:
\d“用户”
When your table name starts with a capital letter you should put your table name in the quotation.
Example:
\d "Users"
您还可以使用以下查询
示例进行检查:我的表有 2 列 name 和 pwd。 下面给出截图。
*使用PG admin3
You can also check using below query
Expmple : My table has 2 columns name and pwd. Giving screenshot below.
*Using PG admin3
描述表的最佳方式,例如列、类型、列修饰符等。
The best way to describe a table such as a column, type, modifiers of columns, etc.
\dt 可以描述多个表只需:
\dt 可以简单地描述单个表:
\d 可以详细描述多个表:
\d+可以更详细地描述多个表:
另外,pg_tables 可以简单地描述一个表:
并且, information_schema.columns 可以更详细地描述表格:
\dt can describe multiple tables simply:
\dt can describe a single table simply:
\d can describe multiple tables in detail:
\d+ can describe multiple tables in more detail:
In addition, pg_tables can describe a table simply:
And, information_schema.columns can describe a tables in much more detail:
当您的表不是默认模式的一部分时,您应该编写:
否则,您将收到错误消息“关系不存在”。
When your table is not part of the default schema, you should write:
Otherwise, you would get the error saying that "the relation doesn not exist."
1) PostgreSQL DESCRIBE TABLE using psql
在 psql 命令行工具中,\d table_name 或 \d+ table_name 查找表列的信息
2) PostgreSQL DESCRIBE TABLE using information_schema
SELECT语句查询information_schema数据库中columns表的column_names,datatype,字符最大长度;
选择
COLUMN_NAME、DATA_TYPE、CHARACTER_MAXIMUM_LENGTH
来自 INFORMATION_SCHEMA.COLUMNS where table_name = 'tablename';
有关详细信息 https:// /www.postgresqltutorial.com/postgresql-describe-table/
1) PostgreSQL DESCRIBE TABLE using psql
In psql command line tool, \d table_name or \d+ table_name to find the information on columns of a table
2) PostgreSQL DESCRIBE TABLE using information_schema
SELECT statement to query the column_names,datatype,character maximum length of the columns table in the information_schema database;
SELECT
COLUMN_NAME, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS where table_name = 'tablename';
For more information https://www.postgresqltutorial.com/postgresql-describe-table/
要获取描述使用,
要获取索引使用,
To get description use,
To get the indexes use,
/dt 是列出数据库中存在的所有表的命令。 使用
/d 命令和 /d+ 我们可以获取表的详细信息。 sysntax 将类似于
* /d 表名(或)\d+ 表名
/dt is the commad which lists you all the tables present in a database. using
/d command and /d+ we can get the details of a table. The sysntax will be like
* /d table_name (or) \d+ table_name
即使请求了 psql 命令,我也会添加 pg_dump 命令。 因为它生成的输出对于以前的 MySQl 用户来说更常见。
# sudo -u postgres pg_dump --table=my_table_name --schema-only mydb
I'll add the pg_dump command even thou the psql command was requested. because it generate an output more common to previous MySQl users.
# sudo -u postgres pg_dump --table=my_table_name --schema-only mydb
我编写了以下脚本来获取表模式。
I worked out the following script for get table schema.