如何在PostgreSQL及DBeaver中获取现有表的创建语句与关联关系
在DBeaver中获取PostgreSQL表创建语句及关联关系的有效方法
先明确你之前尝试方法的问题:
pg_dump是终端命令,无法直接在DBeaver的SQL编辑器中执行,且未指定数据库连接参数时无法生效information_schema.tables不存在view_definition字段,该字段属于视图信息表information_schema.views,不适用于普通表pg_tables系统视图没有definition字段,表的创建语句需要通过专门的系统函数获取- 第二个
pg_dump命令未替换实际的schema名和数据库名,且同样是终端命令,不适用于DBeaver内操作 /+d metal_products是psql终端工具的命令,DBeaver不支持该语法
以下是DBeaver内的有效操作方式:
一、可视化界面操作(无需编写SQL)
1. 获取表创建语句
- 在DBeaver左侧数据库导航树中找到
metal_products表 - 右键点击表名,选择**「生成SQL」→「创建」**
- 弹出窗口会显示完整的
CREATE TABLE语句,包含字段定义、主键、约束、索引等所有结构信息
2. 获取关联关系(外键)
- 右键点击表名,选择**「属性」**
- 切换到**「外键」**标签页:查看该表作为子表,引用其他表的外键关联信息(外键字段、父表、父表字段)
- 切换到**「引用」**标签页:查看其他表作为子表,引用该表的外键关联信息
- 也可直接展开表节点下的**「约束」→「外键」**,快速查看所有外键
二、SQL查询方式
1. 获取表创建语句
执行以下SQL,将your_schema替换为表实际所属的schema(默认是public):
-- 指定schema的情况 SELECT pg_get_create_table('your_schema.metal_products'); -- 若表在public schema,可简化为 SELECT pg_get_create_table('metal_products');
2. 获取外键关联关系
查询该表引用其他表的外键
SELECT tc.table_name AS 子表名称, kcu.column_name AS 外键字段, ccu.table_name AS 父表名称, ccu.column_name AS 父表引用字段 FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name WHERE constraint_type = 'FOREIGN KEY' AND tc.table_name = 'metal_products' AND tc.table_schema = 'your_schema'; -- 替换为实际schema
查询其他表引用该表的外键
SELECT tc.table_name AS 子表名称, kcu.column_name AS 外键字段, ccu.table_name AS 父表名称, ccu.column_name AS 父表引用字段 FROM information_schema.table_constraints AS tc JOIN information_schema.key_column_usage AS kcu ON tc.constraint_name = kcu.constraint_name JOIN information_schema.constraint_column_usage AS ccu ON ccu.constraint_name = tc.constraint_name WHERE constraint_type = 'FOREIGN KEY' AND ccu.table_name = 'metal_products' AND ccu.table_schema = 'your_schema'; -- 替换为实际schema
内容的提问来源于stack exchange,提问作者Arvind Chourasiya
相关产品推荐
相关产品推荐

