Можно ли выполнить команду «source» (сценарий SQL) из соединения JDBC? - PullRequest
0 голосов
/ 26 августа 2018

Я пишу приложение, которое имеет слой доступа к данным для абстрагирования базовых соединений с базами данных SQLITE3 или MySQL.

Вчера, благодаря некоторой помощи, мне показали, как использовать построитель процессов для запускаимпорт командной строки в базу данных SQLITE3 с использованием перенаправления вывода.

Теперь я пытаюсь создать ту же базу данных, но в MySQL, импортировав файл дампа.Загрузка работает нормально из командной строки клиента.Я просто сообщаю ему исходный файл, и БД успешно создается.

Однако я пытаюсь сделать это с помощью кода во время выполнения, и мой метод выполнения оператора SQL не может выполнить команду источника.

Я подозреваю, что это потому, что "source" - это не SQL, но я не знаю, что еще можно использовать для его запуска.

Мое сообщение об ошибке:

java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'source /tmp/ISMCoreActionPack_mysql.sql' at line 1

Ошибка командной строки:

source /tmp/ISMCoreActionPack_mysql.sql;

Мой метод:

public Boolean executeSqlStatement(String sql)  {
    Boolean rc = false;
    try {
      Connection connection = getConnection();
      Statement statement = connection.createStatement();
      rc = statement.execute(sql);
      connection.close();
    } catch (SQLException e) {
      e.printStackTrace();
      System.err.println(e.getClass().getName() + ": " + e.getMessage());
      System.exit(1);
    }
    return rc;
}

Кто-нибудь может подсказать, как это сделать?

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

source не является частью MySQL диалекта SQL;это команда оболочки MySQL.Тем не менее, вам не нужно писать свой собственный парсер.Вы можете использовать что-то вроде SqlTool , как описано в в этом ответе .

0 голосов
/ 26 августа 2018

Вы не можете запустить команду «source», потому что она не поддерживается драйвером JDBC, только MySQL.

Мой вам совет следующий.Напишите некоторый парсер, который читает запросы из файла и выполняет их, используя операторы JDBC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...