我需要比这个简单的问题更具体。 我们需要将数据库中的表和模式发布到另一个数据库。但不是整个数据库。
某些上下文:我们将允许用户/管理员在数据库的表中写入转储和还原的顺序。 然后,我们想将命令传递给pg_dump。 假设用户A在名为“ ordre_publication”的表中写了一些行,这些行中的每一行都包含一个架构名称。我们希望将这些参数传递给pg_dump。
我试图编写一个函数,该函数将被调用,并用正确的行写一个.sh文件。 在另一数据库中,一行用于pg_dump指令,另一行用于pg_restore指令。
我遇到很多问题。 第一:如何处理意见?如果我的用户指定一个视图而不是表,则该视图将无效。 第二:如何使用函数编写sh文件。 我尝试过
create or replace function plm.test_publication(out msg text)
language plpgsql
as $function$
declare
begin
msg:='pg_dump...';
msg:=msg||E'\n\r'||'pg_restore...';
end;
$function$;
但是当我在服务器上操作时:
psql (...) -c "\\copy (select * from plm.test_publication()) to test.sh with (format text)" -q
sh文件看起来像
pg_dump...\n\rpg_restore...
但是主要的是:这是一种可靠的解决方法吗?
预先感谢您的任何建议。