从CloudBees部署的Java应用程序以编程方式将sql文件导入mysql

时间:2012-11-14 15:33:22

标签: mysql cloudbees

从CloudBees中部署的Java应用程序将完整的.sql文件(带有DDL和DML语句)导入mysql数据库的最佳方法是什么?

我是否应该尝试获取运行时进程并查看此类内容是否有效

  Runtime rt = Runtime.getRuntime();
  Process pr = rt.exec("mysql -p -h ServerName DbName < dump.sql");

(针对自托管环境推荐的解决方案in a previous question,不确定在CloudBees托管的应用程序中我是否可以执行访问mysql的进程)?

有更好的解决方案吗? (再次,要从应用程序中执行它,要导入的.sql文件将由用户提供,作为他与Web应用程序交互的一部分。)

我真的想避免解析.sql文件并通过jdbc逐个发送句子。

2 个答案:

答案 0 :(得分:2)

我自己没有尝试过,但Flyway似乎可以让您在CloudBees上初始化应用时导入SQL文件。

Flyway试图将流行的Ruby database migrations概念引入Java。 Flyway将允许您将.sql文件放在应用程序的类路径中,然后您可以根据需要使用一些Java代码来更新数据库。

基于他们的migration docs,您应该能够将.sql文件作为名为V1__Initial_version.sql的文件放入类路径的/ db / migration /目录中。然后,您可以使用following code之类的内容在应用启动时触发迁移:

import com.googlecode.flyway.core.Flyway;
...

Flyway flyway = new Flyway();
flyway.setDataSource(...);
flyway.migrate();

我注意到Flyway FAQ解释了数据库在迁移期间被锁定,因此即使您在CloudBees上扩展应用程序以使用多个实例(非常好!!),这种方法也应该有效。

答案 1 :(得分:0)

我想试一试。 mysql cmd工具可能在主机上,也可能不在主机上。如果不是,我们可以添加它们。

另一种选择是使用Jenkins工作来完成它。您可以公开jenkins调用的api并加载数据库。