Запуск .sql скрипта для создания таблиц через JDBC и MySQL
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Если вы хотите выполнить MySQL .sql скрипт с помощью JDBC, можете применить следующий простой метод:
String script = new String(Files.readAllBytes(Paths.get("script.sql"))); // Загружаем содержимое скрипта.
try (Connection conn = DriverManager.getConnection("jdbc:mysql://host/db", "user", "pass");
Statement stmt = conn.createStatement()) {
for (String command : script.split(";")) {
if (!command.trim().isEmpty()) {
stmt.executeUpdate(command + ";"); // Выполняем команды последовательно.
}
}
} catch (SQLException e) {
e.printStackTrace(); // Здесь мы обрабатываем SQL исключения.
}
Не забывайте подстроить параметры script.sql
, host
, db
, user
и pass
под свои потребности. Теперь вы готовы к подключению!
Детальное выполнение скриптов с ScriptRunner
ScriptRunner – это класс, бесплатный для использования согласно лицензии Apache и доступный на GitHub. Этот инструмент предлагает расширенные возможности для выполнения .sql скриптов, обработки ошибок и управления транзакционностью SQL команд. Если вам необходим контроль над поведением автокоммита, ScriptRunner будет весьма подходящим.
Визуализация
Допустим, у нас есть:
🚂 = JDBC подключение
🛤️ = Путь к SQL скрипту
🗂️ = База данных
Тогда использование этого будет выглядеть так:
🚂(JDBC подключение).load(🛤️(Путь к SQL скрипту)).to(🗂️(База данных));
Проще говоря, так же как поезд следует по рельсам, чтобы прибыть в запланированное место, JDBC подключение позволяет выполнить скрипт SQL для работы с базой данных.
Практические примеры и реализации с использованием ScriptRunner
Основы ScriptRunner
JDBC ScriptRunner – это утилита для выполнения SQL запросов, которая также предлагает дополнительные опции для управления транзакциями и обработки ошибок.
try (Connection conn = DriverManager.getConnection("jdbc:mysql://host/db", "user", "pass")) {
ScriptRunner runner = new ScriptRunner(conn);
runner.setAutoCommit(true); // Включаем автокоммиты.
runner.setStopOnError(true); // Останавливаемся при возникновении ошибок.
Reader reader = new BufferedReader(new FileReader("script.sql"));
runner.runScript(reader); // Запускаем скрипт.
} catch (IOException | SQLException e) {
e.printStackTrace(); // Обрабатываем возможные ошибки.
}
ScriptRunner можно найти на GitHub как отдельный класс или в составе проекта Apache iBatis.
Применение Spring Framework для управления скриптами
Spring Framework предлагает класс ResourceDatabasePopulator
, который облегчает запуск скриптов:
ResourceDatabasePopulator rdp = new ResourceDatabasePopulator();
rdp.addScript(new ClassPathResource("script.sql")); // Добавляем скрипт.
try (Connection conn = dataSource.getConnection()) {
rdp.populate(conn); // Запускаем скрипты.
} catch (SQLException e) {
e.printStackTrace(); // Обрабатываем исключения.
}
А также JdbcTestUtils
для удобного выполнения SQL скриптов:
JdbcTestUtils.executeSqlScript(new JdbcTemplate(dataSource), new ClassPathResource("script.sql"), false); // Быстрое выполнение.
Обработка ошибок
Важно всегда заботиться об обработке SQLExceptions
, оборачивая вызовы методов в блоки try-catch
, чтобы избегать нежелательных проблем.
Максимальная эффективность с использованием StreamReader и Scanner
Если важна минимальная зависимость от внешних библиотек, то StreamReader и Scanner могут быть хорошим выбором:
InputStream is = new FileInputStream("script.sql"); // Открываем файл.
try (Scanner scanner = new Scanner(is).useDelimiter(";")) {
try (Connection conn = DriverManager.getConnection("jdbc:mysql://host/db", "user", "pass");
Statement stmt = conn.createStatement()) {
while(scanner.hasNext()) {
String sqlStmt = scanner.next() + ";";
if (!sqlStmt.trim().isEmpty()) {
stmt.executeUpdate(sqlStmt); // Выполняем SQL команду.
}
}
}
} catch (FileNotFoundException | SQLException e) {
e.printStackTrace(); // Обрабатываем исключения.
}
Это позволяет удерживать контроль на выполнением со максимально малым количеством зависимостей.
Полезные материалы
- Запуск .sql скрипта в MySQL с помощью JDBC – Stack Overflow — пошаговые инструкции и полезные советы по работе со скриптами в JDBC.
- Соединение с DataSource объектами – Java Tutorials — официальное руководство по работе с DataSource и Connection.
- ibatis-core 3.0 javadoc – ScriptRunner — документация по ScriptRunner для работы с базами данных.
- Туториал по JDBC API – Java™ Tutorials — универсальное руководство по работе с Java и MySQL через JDBC.
- Репозиторий Maven: JDBC драйверы для MySQL — источник для загрузки JDBC драйвера MySQL.
- Класс File – Java Platform SE 8 — полезный гид по работе с файлами, что важно при использовании SQL скриптов.