Сценарий H2: условный вызов CALL CSVWRITE - PullRequest
1 голос
/ 30 января 2020

Я хочу экспортировать таблицы своей базы данных H2 в отдельные файлы CSV.

Я делаю это, добавляя в конец файла. sql методы CSVWRITE, например:

CALL CSVWRITE ('table.csv', 'SELECT * FROM TABLE ORDER BY ID', 'charset=UTF-8');
CALL CSVWRITE ('table1.csv', 'SELECT * FROM TABLE1 ORDER BY ID', 'charset=UTF-8');

Проблема в том, что иногда таблица может не существовать, и я получаю следующее исключение:

    Exception in thread "main" org.h2.jdbc.JdbcSQLException: Table "TABLE" not found; SQL statement:
SELECT * FROM TABLE ORDER BY ID  [42102-197]
    at org.h2.message.DbException.getJdbcSQLException(DbException.java:357)
    at org.h2.message.DbException.get(DbException.java:179)
    at org.h2.message.DbException.get(DbException.java:155)
    at org.h2.command.Parser.readTableOrView(Parser.java:5920)
    at org.h2.command.Parser.readTableFilter(Parser.java:1430)
    at org.h2.command.Parser.parseSelectSimpleFromPart(Parser.java:2138)
    at org.h2.command.Parser.parseSelectSimple(Parser.java:2287)
    at org.h2.command.Parser.parseSelectSub(Parser.java:2133)
    at org.h2.command.Parser.parseSelectUnion(Parser.java:1946)
    at org.h2.command.Parser.parseSelect(Parser.java:1919)
    at org.h2.command.Parser.parsePrepared(Parser.java:463)
    at org.h2.command.Parser.parse(Parser.java:335)
    at org.h2.command.Parser.parse(Parser.java:307)
    at org.h2.command.Parser.prepareCommand(Parser.java:278)
    at org.h2.engine.Session.prepareLocal(Session.java:611)
    at org.h2.engine.Session.prepareCommand(Session.java:549)
    at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1247)
    at org.h2.jdbc.JdbcStatement.executeQuery(JdbcStatement.java:78)
    at org.h2.tools.Csv.write(Csv.java:167)
    at org.h2.expression.Function.getValueWithArgs(Function.java:1556)
    at org.h2.expression.Function.getValue(Function.java:567)
    at org.h2.command.dml.Call.query(Call.java:65)
    at org.h2.command.CommandContainer.query(CommandContainer.java:114)
    at org.h2.command.Command.executeQuery(Command.java:202)
    at org.h2.jdbc.JdbcStatement.executeInternal(JdbcStatement.java:227)
    at org.h2.jdbc.JdbcStatement.execute(JdbcStatement.java:205)
    at org.h2.tools.RunScript.process(RunScript.java:262)
    at org.h2.tools.RunScript.process(RunScript.java:192)
    at org.h2.tools.RunScript.process(RunScript.java:329)
    at org.h2.tools.RunScript.runTool(RunScript.java:143)
    at org.h2.tools.RunScript.main(RunScript.java:70)

Как я могу проверить, существует ли таблица, прежде чем я вызову CSVWRITE?

Спасибо!

...