DataGrip环境下如何快速克隆云托管PostgreSQL数据库至本地(避免字段硬编码)
嘿,这个问题我太熟了——手动敲155个字段简直是噩梦!用DataGrip其实有好几种快速克隆的办法,不用碰半个字段的硬编码,给你捋两个最实用的:
方法1:用DataGrip自带的「数据库迁移」工具(最省心)
- 第一步:确保你已经在DataGrip里同时连接了云PostgreSQL和本地PostgreSQL两个数据源。如果本地还没创建数据库,先在本地连接上右键新建一个空库(比如叫
cloud_db_copy)。 - 第二步:在左侧数据库面板里,找到云库的数据库(或者你要克隆的单张表),右键点击 → 选择「Database Tools」→ 「Migrate to...」
- 第三步:在弹出的迁移窗口中,「Source」选你的云PostgreSQL,「Target」选刚才新建的本地空库。
- 第四步:接下来可以勾选要迁移的对象——是整个库还是特定表,DataGrip会自动读取所有表结构(包括那155个字段)、约束、索引甚至数据。核对完内容后点击「Migrate」,等着完成就行。
- 小补充:如果只想先迁移表结构(之后再单独导数据),可以在迁移设置里把「Data」选项关掉,按需选择就好。
方法2:用PostgreSQL原生的
pg_dump和pg_restore(更灵活) DataGrip自带终端,直接在里面跑命令就行,不用切换到系统终端:
- 第一步:打开DataGrip底部的「Terminal」面板,导出云数据库的结构+数据:
参数说明:pg_dump -h 云数据库主机地址 -U 云库用户名 -d 云数据库名 -F c -b -v -f cloud_db_dump.dump-F c用压缩的自定义格式(恢复效率高),-b包含大对象,-v显示详细进度,-f指定导出的文件名。 - 第二步:恢复到本地数据库(先确保本地已经建好空库
cloud_db_copy):pg_restore -h localhost -U 本地用户名 -d cloud_db_copy -v cloud_db_dump.dump - 小补充:如果只想导出表结构,给
pg_dump加个-s参数(pg_dump -s ...),这样只会导出表结构、约束、索引这些,不包含数据。
小技巧:只克隆特定表
如果不需要整个库,只想克隆那张有155个字段的表:
- 用DataGrip可视化操作:右键目标表 → 「Copy Table to...」→ 选择本地数据库,DataGrip会自动创建一模一样的表结构,还能选择是否同步数据。
- 用SQL快速实现:在本地库的查询窗口执行以下语句(注意替换占位符):
这里的「云库数据源名」是你在DataGrip里给云PostgreSQL设置的名称,-- 先创建和云表完全一致的空表 CREATE TABLE local_target_table AS SELECT * FROM 云库数据源名.public.target_table LIMIT 0; -- 再导入数据 INSERT INTO local_target_table SELECT * FROM 云库数据源名.public.target_table;public是默认schema,target_table是你要克隆的表名。
内容的提问来源于stack exchange,提问作者pouchewar
相关产品推荐
相关产品推荐

