PostgresSQL:使用 JDBC 跳过 SQL 客户端中的错误

PostgreSQL: skip erros in SQL clients using JDBC

我想在使用 JDBC 的客户端(不是 postgreSQL pslq 客户端)中执行 SQL 脚本。在这个脚本中,我想做这样的事情:

skip errors on;

alter table foo ...;

skip errors off;

有没有办法用 PostgreSQL >= 9.1 做到这一点?

我发现此线程使用 DO 块和错误代码提供了很好的解决方案: How to continue sql script on error?

并为我的问题创建一个函数:

create or replace function continueOnError(v_sqlStatement text)
  returns void
  language plpgsql
  as ' 
  BEGIN
    execute v_sqlStatement;
  EXCEPTION
    WHEN invalid_schema_name
      OR undefined_table 
      OR undefined_column 
    THEN RAISE WARNING ''Continued on error sql statement: %'', v_sqlStatement;
  END;
';

...使用它:

select continueOnError('alter table test add constraint fk_test_valueid foreign key (valueid) references value(id)');