0

我想在两个 postgres 服务器之间复制大量数据集。具体来说,我想:

  1. 将源数据库服务器中的两个表中的一些列(不是全部)复制到目标数据库服务器中的单个表中。
  2. 重命名目标表中的这些列(因为数据集是副本),因为目标列名与原始列名不同(也许我应该说在目标表中的 some_column_name 中插入值)。

我知道postgres_fdw不能用于完成此任务,因为它将整个表复制到新表(不合并选定字段以形成新表)并且源表和目标表都必须具有匹配的列号。

我的源数据库服务器是一个远程 I ssh,要复制的数据集约为 5GB。

有什么建议可以完成我的任务吗?

4

1 回答 1

0

主意:

  • 让一台服务器(主机)写入临时表(下面的示例)。
  • 当主机服务器写入临时表时,它会设置created_ts.

  • 当外部服务器成功读取数据时,它会设置xchange_ts.

使用外部数据包装器可能不需要该xchange_err字段,但这样做的目的是报告导入失败。


CREATE TABLE staging
( id          SERIAL PRIMARY KEY
, created_ts  TIMESTAMPTZ
, xchange_ts  TIMESTAMPTZ
, xchange_err TEXT DEFAULT NULL
, colA        type_datatype
, colB        type_datatype
);

我实际上没有使用过,postgres_fdw但我想外部表会被定义为这样的。

CREATE FOREIGN TABLE staging 
( id          INTEGER PRIMARY KEY
, created_ts  TIMESTAMPTZ
, xchange_ts  TIMESTAMPTZ
, xchange_err TEXT DEFAULT NULL
, colA        type_datatype
, colB        type_datatype
)
SERVER <server_name>
OPTIONS (schema_name '<schema_name>', table_name 'staging');
于 2019-05-26T16:18:28.453 回答