Executar arquivo com SQLExec contendo $$ caracteres
Eu criei um arquivo de despejo sql usando pg_dump. Este arquivo de exportação contém funções que contêm caracteres $. Não há problema em importar o arquivo com psql -f <filename>.
Se quiser importar o arquivo com ant usando a tarefa SQLExec, recebo uma exceção como:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$"
Existe uma maneira de importar um arquivo contendo $?
No log de postgres, parece que as tarefas SQLExec convertem $ em $, o que causa o erro.
ERRO: erro de sintaxe igual ou próximo a "$4$quot; no caractere 87 DECLARAÇÃO: CREATE FUNCTION process_create_servicenumber () RETURNS trigger LANGUAGE plpgsql AS $ BEGIN SE (TG_OP = 'DELETE') ENTÃO RETURN OLD
Aqui meu método
protected void importNewDbFromDumpFile() {
final class SqlExecuter extends SQLExec {
public SqlExecuter() {
Project project = new Project();
project.init();
setProject(project);
setTaskType("sql");
setTaskName("sql");
}
}
try {
SqlExecuter executer = new SqlExecuter();
executer.setSrc(new File(dbDumpFileLocation));
executer.setClasspath(createClasspath());
executer.setEscapeProcessing(true);
executer.setDriver("org.postgresql.Driver");
executer.setUrl("jdbc:postgresql://localhost/test");
executer.setPassword("test");
executer.setUserid("manager");
executer.execute();
} catch (Exception e) {
log.info("Exception importing database ...", e);
}
}