Führen Sie die Datei mit SQLExec aus, das $$ Zeichen enthält

Ich habe eine SQL-Dump-Datei mit pg_dump erstellt. Diese Exportdatei enthält Funktionen, die $ Zeichen enthalten. Kein Problem, die Datei mit psql -f <Dateiname> zu importieren.

Wenn Sie die Datei mit ant mithilfe der SQLExec-Task importieren möchten, erhalte ich eine Ausnahme wie:

org.postgresql.util.PSQLException: ERROR: syntax error at or near "$"

Gibt es eine Möglichkeit, eine Datei mit $ zu importieren?

Im Postgres-Protokoll scheint es, dass die SQLExec-Tasks $ in $ konvertieren, was den Fehler verursacht.

ERROR: Syntaxfehler bei oder in der Nähe von "$4$quot; bei Zeichen 87 STATEMENT: CREATE FUNCTION process_create_servicenumber () RETURNS-Trigger LANGUAGE plpgsql AS $ BEGIN IF (TG_OP = 'DELETE') THEN RETURN OLD

Hier meine Methode

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);
    }
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage