0

我正在尝试从通过导入外部模式导入到我的外部表中的所有表创建表。我想这样做的原因只是将数据从一个 PostgreSQL 服务器数据库复制到另一个。我知道我不会得到序列和其他与表相关的索引,但这没关系。我不想做 pg_dump,所以我一直在尝试这样做,但到目前为止,我对下面的代码没有任何运气。

当我运行该函数时,查询正在运行,但似乎没有开始在我的数据库中创建表,我很难确定我的函数是否真的在工作。

DROP FUNCTION gv.create_tables_from_foreign_schema(character varying,character varying);

CREATE OR REPLACE FUNCTION gv.create_tables_from_foreign_schema(_foreign_schema character varying, _local_schema character varying)
  RETURNS void AS
$BODY$
declare
    selectrow record;
begin
for selectrow in
select 'CREATE TABLE ' || quote_ident(_local_schema) || '.' ||quote_ident(t.table_name) || ' AS SELECT * FROM ' || quote_ident(_foreign_schema) || '.' ||quote_ident(t.table_name) || '' AS qry 
from (
     SELECT table_name 
     FROM information_schema.tables
     WHERE table_schema = _foreign_schema
     )t
loop
execute selectrow.qry;
end loop;
end;
$BODY$
  LANGUAGE plpgsql

SELECT gv.create_tables_from_foreign_schema('gv_import_fra_pgv_2018a', 'gv')

该功能对您有意义吗?

4

1 回答 1

0

该功能看起来不错。

我怀疑一切都很好;您看不到任何新表,因为事务尚未完成。如果您查看数据目录,您应该会看到正在创建和写入的新文件。

于 2018-03-09T20:37:45.773 回答