Wykonaj plik z SQLExec zawierający znaki $$
Utworzono plik zrzutu sql przy użyciu pg_dump. Ten plik eksportu zawiera funkcje zawierające znaki $. Nie ma problemu, aby zaimportować plik za pomocą psql -f <nazwa pliku>.
Jeśli chcesz zaimportować plik za pomocą mrówki za pomocą zadania SQLExec, otrzymuję wyjątek, taki jak:
org.postgresql.util.PSQLException: ERROR: syntax error at or near "$"
Czy istnieje sposób na zaimportowanie pliku zawierającego $?
W dzienniku postgres wydaje się, że zadania SQLExec konwertują $ na $, co powoduje błąd.
BŁĄD: błąd składni przy lub w pobliżu „$” przy znaku 87 OŚWIADCZENIE: CREATE FUNCTION process_create_servicenumber () RETURNS trigger LANGUAGE plpgsql AS $ BEGIN IF (TG_OP = 'DELETE') NASTĘPNIE POWRÓT STARE
Oto moja metoda
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);
}
}