如何使用PGADMIN工具在Postgres中运行多个SQL语句?

7
我有170个Alter Drop Constraint语句,120个Truncate table语句,120个Insert table语句和170个Alter Add Constraint语句。所有这些语句都应该在一个脚本中作为批处理脚本运行,并且我使用PGADMIN IV工具。

尝试像Oracle一样在Begin和End之间执行它们,但是似乎无法正常工作。

BEGIN 
  ALTER Statement1..,,  ;
  ALTER Statement2..,,  ;
  TRUNCATE Statement3..,,  ;
  TRUNCATE Statement4..,,  ;
  INSERT Statement5..,,    ;
  INSERT Statement6..,,    ;
  COMMIT;
  ALTER Statement7..,,     ;
  ALTER Statement8..,,     ;
  ---
  -----
  -------
  ---------
  COMMIT;
END;

但是它没有起作用,

请问有人能给出建议,我该如何做到这一点?


每个语句后面都需要一个;,而不是,,并且在结尾处需要一个COMMIT;ROLLBACK;end;仅在PL/pgSQL中有效,而在SQL中(与Oracle相同)无效。 - user330315
是的,我做了那件事,但不幸的是忘记在这里发布,我正在编辑它!就我所知,在Postgres中我们不能在BEGIN和END子句之间运行SQL语句,而是将所有SQL单独编写,并一次性选择所有内容并相应地运行它。 在这里,我谈论的是在PGADMIN IV工具中运行,而不是PSQL。 但现在我只是在寻找解决方法,如果有其他替代方案可以使用PL/PGSQL在PG ADMIN TOOL中运行所有SQL作为一个批处理。如果我在这里错了,请纠正我。 - user10531062
如果你正在寻找 Oracle 匿名 PL/SQL 块的等效物,那么你可能正在寻找 do 命令。 - user330315
好的,不错。但是假设我需要在Postgres中使用PGADMIN工具运行三个select语句,你能告诉我如何完成吗? - user10531062
抱歉,我不使用pgAdmin。 - user330315
啊,好的。但是我真的很感激你在忙碌的日程中抽出时间来查看这个。 - user10531062
1个回答

8

从你的问题中并不清楚你实际想要做什么。你是想在一个脚本或一个事务中运行所有语句吗?

如果你需要在一个脚本中运行它们,那么只需按照以下方式在PGADMIN中运行它们即可。

  ALTER Statement1 ;
  ALTER Statement2 ;
  TRUNCATE Statement3 ;
  TRUNCATE Statement4 ;
  INSERT Statement5 ;
  INSERT Statement6 ;
  ALTER Statement7 ;
  ALTER Statement8 ;

等等还有其他类似的问题。

另一方面,如果您想在一个事务中运行它们所有,那么只需将语句放在BEGIN和COMMIT中即可,具体如下:

  BEGIN ;
  ALTER Statement1 ;
  ALTER Statement2 ;
  TRUNCATE Statement3 ;
  TRUNCATE Statement4 ;
  INSERT Statement5 ;
  INSERT Statement6 ;
  ALTER Statement7 ;
  ALTER Statement8 ;
  COMMIT ;

我看不出在PGADMIN中运行这个命令和在类似psql的客户端中运行这个命令有什么不同。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接