我正在尝试从通过导入外部模式导入到我的外部表中的所有表创建表。我想这样做的原因只是将数据从一个 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')
该功能对您有意义吗?