2014-07-03 102 views
0

情况是我们正在生成一个sqlite数据库作为输出。Java - 比较两个sqlite数据库文件

我想看看所说的数据库是否等于预期的数据库文件。

到目前为止,我一直在使用sqlite3的生成转储,然后比较文件,提出这样一个问题:How to compare two sqlite databases on linux

这适用于我们的目的,但我注意到我正在使用sqlite3可执行文件的Linux。我用下面的代码创建转储:

// call sqlite3 .dump 
Process p = Runtime.getRuntime().exec(executeCommand); 

这使得测试在Windows环境中失败:

java.io.IOException: Cannot run program "C:\[...]": CreateProcess error=193, 
    %1 is not a valid Win32 application 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1041) 
at java.lang.Runtime.exec(Runtime.java:617) 

我想我可以简单的写了一堆查询,或包括所有的sqlite3可执行文件,只需检查操作系统并将其隐藏在界面后面,但我认为我会首先询问是否有人有更简单的解决方案,或者甚至是完全避免此问题的其他方法。

+2

“我注意到,sqlite3的是平台相关的。”怎么样?平台之间有什么区别? –

+0

编辑的问题,以澄清。 – Danedo

+0

http://stackoverflow.com/search?q=schemacrawler+sqlite –

回答

0

我理解这一点的方式是,您要确保不同系统上的SQLite数据库中的数据库模式(即表,列等)以及数据本身相同。您应该使用许多数据库比较工具之一。

SchemaCrawler for SQLite就是这样 - 一种免费的跨平台工具,用于使用人类可读的纯文本格式执行数据库模式和数据差异。

Sualeh Fatehi,SchemaCrawler