【问题标题】:Java - Compare two sqlite database filesJava - 比较两个 sqlite 数据库文件
【发布时间】:2014-07-03 14:38:38
【问题描述】:

情况是我们正在生成一个 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 可执行文件,然后检查操作系统并将其隐藏在接口后面,但我想我会先询问是否有人有更简单的解决方案,或者甚至是完全避免该问题的不同方法。

【问题讨论】:

  • "我注意到 sqlite3 依赖于平台。"如何?平台之间有什么区别?
  • 已编辑问题以澄清。
  • 如果数据库相同,则转储应该相同。这是否归结为关于行尾的问题?
  • 毫无疑问,不同的是两个系统之间的环境。不同的目录结构,不同的命令语法等

标签: java database sqlite


【解决方案1】:

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

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

Sualeh Fatehi,SchemaCrawler

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-06
    • 2011-11-28
    • 1970-01-01
    • 1970-01-01
    • 2017-10-29
    • 2011-05-29
    • 2015-06-25
    相关资源
    最近更新 更多