情况是我们正在生成一个sqlite数据库作为输出。
我想查看所述数据库是否等于预期的数据库文件。
到目前为止,我一直在使用sqlite3生成转储,然后按照此问题中的建议比较文件:How to compare two sqlite databases on linux。
这适用于我们的目的,但是我注意到我正在为linux使用sqlite3可执行文件。我使用以下代码创建转储:
// 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可执行文件,只检查操作系统并将其隐藏在界面后面,但我想我先问一下是否有人有更简单的解决方案,或者甚至是一种完全避免问题的不同方法。
答案 0 :(得分:0)
我理解这一点的方式是你要确保不同系统上的SQLite数据库中的数据库模式(即表,列等)和数据本身是相同的。您应该使用许多数据库比较工具之一。
SchemaCrawler for SQLite就是这样一个免费的跨平台工具,用于使用人类可读的纯文本格式执行数据库模式和数据差异。
Sualeh Fatehi,SchemaCrawler