使用JDBC执行.sql文件

时间:2016-08-13 20:36:09

标签: java jdbc

我想测试一个使用SQLite JDBC驱动程序的手写DAO。我的计划是将版本控制中的模式和数据插入保存为.sql文件,并在测试之前执行它们以获得可用于测试的填充数据库。

使用JDBC搜索执行整个sql脚本的解决方案,发现了一堆Stackoverflow线程,说它不可能并提供一些解析脚本将sql脚本拆分为单独的sql语句(SQLScriptRunner)。

这些帖子大多是3岁以上,所以我想知道是否仍然没有#34; easy"使用JDBC API执行sql脚本的方法。

我问,因为SQLite为我提供了从现有数据库克隆数据库的选项,我更喜欢使用大型脚本执行器实现(执行器可能比我的所有数据访问代码组合更大)

那么,是否有一种简单易用的方法来使用JDBC执行sql脚本,还是只能使用一些解析脚本?

2 个答案:

答案 0 :(得分:1)

我猜Spring Framework ScriptUtils可能会为你做这个技巧。

请检查

http://docs.spring.io/autorepo/docs/spring/4.0.9.RELEASE/javadoc-api/org/springframework/jdbc/datasource/init/ScriptUtils.html

  

我的计划是将架构和数据插入版本控制中   作为.sql文件并在测试之前执行它们以获得填充   我可以用来测试的数据库。

为此目的,有一个像 DbUnit http://dbunit.sourceforge.net/

这样的库

我个人觉得如果没有适当的包装,我会发现它有点棘手。

其中一些包装:

Spring Test DbUnit https://springtestdbunit.github.io/spring-test-dbunit/

Unitils DbUnit http://www.unitils.org/tutorial-database.html

答案 1 :(得分:0)

虽然不是"开箱即用" JDBC解决方案,我倾向于使用SqlTool。它对HSQLDB特别友好,但它可以与(几乎?)任何JDBC驱动程序一起使用。 (文档显示了如何连接PostgreSQL,SQL Server,Oracle,Derby等的示例。)它可以通过Maven获得,而JAR文件只有~150KB。有关如何使用它运行SQL脚本的示例,请参阅我的其他答案here

关于拟议的Spring" ScriptUtils"解决你问题中的评论......

  

我更喜欢[其他解决方案]而不是使用大型Script-Executer实现(执行者可能比我的所有数据访问代码组合更大)。

...请注意spring-jdbc的依赖项包括spring-corespring-beansspring-txcommons-logging-1.2,总计约2.5MB。这比SqlTool JAR文件大15倍,并且它甚至不包含任何额外的DbUnit"包装器"可能需要或可能不需要使ScriptUtils更容易使用。