Ejecutar archivo con SQLExec que contiene $$ caracteres
He creado un archivo de volcado de SQL usando pg_dump. Este archivo de exportación contiene funciones que contienen $ caracteres. No hay problema para importar el archivo con psql -f <nombre de archivo>.
Si quiero importar el archivo con ant mediante la tarea SQLExec, obtengo una excepción como:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$"
¿Hay una manera de importar un archivo que contiene $?
En el registro de Postgres, parece que las tareas SQLExec convierten $ a $, lo que causa el error.
ERROR: error de sintaxis en o cerca de "$4$quot; en el carácter 87 DECLARACIÓN: CREAR FUNCIÓN process_create_servicenumber () RETURNS trigger LANGUAGE plpgsql AS $ BEGIN IF (TG_OP = 'DELETE') LUEGO RETURN VIEJA
Aqui mi metodo
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);
}
}