我有两个数据库,old_db和new_db,我想要做的是将数据记录从old_db传输到new-db但具有不同的结构或不同的列。我正在创建一个sql脚本,将old_db上传到new_db,然后我可以从old_db获取数据到new_db。
old_db中的一个表是这样的:
tbl_person:
person_id bigint,
last_name text,
first_name text,
现在我想将数据传输到new_db,结构如下所示,new_id列将生成新的id号,person_id将被引用或转移到ref_id列:
tbl_person:
new_id bigint, ---this column is where the new id will be generated
last_name text,
first_name text,
ref_id bigint; ---this column is where the person_id will be copied
如何创建一个sql脚本,以便从old_db到new_db正确引用这些数据?我不是要求一个工具或GUI而是一个我将在shell脚本中执行的sql脚本。我正在使用postgresql作为我的DBMS,因此我还需要有关pg_dump或pg_restore的帮助,以便在new_db中上传old_db。 TIA。
答案 0 :(得分:0)
这个的根源是直接从旧表中将数据插入到新表中。注意:我没有运行此代码。
INSERT INTO new_db.tbl_person (last_name, first_name, ref_id)
(SELECT last_name, first_name, person_id FROM old_db.tbl_person)
如果两个DB都在同一个Postgres实例中运行,那么这将自行运行。如果他们在彼此可见的主机上的不同实例中,您可以使用dblink,这使得SELECT
查询类似于:
SELECT * FROM
dblink(
'host=otherhost user=me password=pass dbname=old_db',
'SELECT last_name, first_name, person_id FROM tbl_person'
) AS tbl_old_person(last_name text, first_name test, person_id integer)
如果主持人无法看到对方,那么pg_dump
和pg_restore
上的StackOverflow会有很多帮助: