Импорт (mysql) базы данных выводит программно через Java

То, как я могу импортировать mysql файл дампа базы данных (содержит, вставляют и создают операторы таблицы), программно через программу Java. Мне нужно это как фаза установки модульного теста.

К сожалению, это не работает:

Connection conn = dbConnectionSource.getConnection();
Statement stmt = conn.createStatement();
stmt.execute(FileUtils.readFileToString(new File("./some-sql-file")));
conn.close();

Спасибо,-A

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

15
задан BalusC 23 December 2009 в 21:09
поделиться

2 ответа

Вы можете запустить новый процесс из java и выполнить эту команду, если у вас есть доступ к исполняемому файлу mysql, где бы вы ни выполняли импорт. Что-то вроде этого:

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("mysql -p -h ServerName DbName < dump.sql");
13
ответ дан 1 December 2019 в 03:43
поделиться

Лично я бы не рекомендовал загружать таким образом обычный дамп SQL, так как для разбора или, по крайней мере, токенирования SQL понадобился бы нетривиальный код.

Я бы порекомендовал использовать CSV дамп данных, их можно загрузить с помощью синтаксиса LOAD DATA INFILE. Смотрите: http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Конечно, вам все равно нужно убедиться в существовании целевых таблиц, но если вы знаете, что вам нужно только разобрать DDL-статемнты создания таблиц, это значительно упростит ваш java-код.

Обратите внимание, что вы можете использовать mysqldump для извлечения CSV-дампов данных из вашей базы данных, смотрите: http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_tab

3
ответ дан 1 December 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: