将表数据从一个数据库复制到另一个数据库

2 投票
2 回答
9215 浏览
提问于 2025-04-15 18:00

在开发过程中,我发现自己经常需要把一个表里的信息复制到另一个表里。我很好奇,有什么简单的方法可以在Postgres中做到这一点。我有PGAdminIII,但它似乎只支持那种繁琐的备份和恢复。

有没有什么Python或Bash脚本,或者其他工具,我只需要提供一些基本信息就可以了?

  • 这是数据库1
  • 这是数据库2
  • 复制表格……
  • 开始吧!

我记得SQLYog可以在Win32上为MySQL做到这一点,但我现在在用OSX,并且使用Postgres。

2 个回答

7

Kettle,也叫做Pentaho数据集成,可以帮你完成这个任务。你可以在这里下载它:http://sourceforge.net/projects/pentaho/files/Data%20Integration/

  1. 下载Kettle并解压缩。
  2. 确保你有Java运行环境(1.5和1.6都可以用在3.2稳定版上)。
  3. 运行 spoon.sh 文件。
  4. 创建一个新任务(文件/新建/任务)。
  5. 定义数据源和目标连接(点击树形结构上方的查看按钮,双击数据库连接节点打开连接向导,或者通过菜单/向导/创建数据库连接向导)。
  6. 选择菜单/向导/复制表向导。
  7. 按照向导的步骤进行操作。
  8. 运行任务(工具栏上的播放按钮)。
3

如果你只是想在两个PostgreSQL数据库之间移动数据,一个不错的方法就是使用pg_dump和pg_restore这两个工具,或者用pg_dump和psql。简单来说就是:

pg_dump -Fc db1 | pg_restore -d db2 -c

(根据你的环境调整参数,具体可以查看手册)

这些工具你应该已经安装好了,如果你只是想转移数据而不想修改它,这种方法会比像Kettle这样的完整ETL工具快得多。

撰写回答