【问题标题】:Using SchemaSpy to visualize a SQLite database (windows)使用 SchemaSpy 可视化 SQLite 数据库(windows)
【发布时间】:2011-04-15 14:11:23
【问题描述】:

我正在尝试使用 SchemaSpy 进行 sqlite 转储。 我启动并运行了 SchemaSpy,并且能够正确转储 MySQL 数据库。

现在我有一个 .sqlite 文件(来自一个 iOS 应用程序)和一个来自 Christian Werner (http://www.ch-werner.de/javasqlite/overview-summary.html) 的 sqlite 驱动程序。 here 上的示例解释了如何使用它,但老实说 - 我不明白该怎么做。

有没有人知道如何在 Windows 上使用 SchemaSpy? 不过,我不需要使用 GUI 工具。

【问题讨论】:

    标签: windows ios sqlite plot schemaspy


    【解决方案1】:

    我也遇到了这个问题,但最终成功了。您需要 SQLite 库的 DLL。

    你可以下载here,然后你可以把它放到你的windows安装的system32文件夹中(比如C:\Windows\System32)

    最后,不要忘记指定确切的 JDBC 驱动程序路径:

    java -jar… -dp "D:\SchemaSpy\driver\j2sdk1.4.2_03\jre\lib\ext\sqlite.jar" …
    

    【讨论】:

      【解决方案2】:

      我是你提到的一篇文章的作者。

      您需要编译 schemaspy JDBC 驱动程序。它是为 UNIX 编写的,但有人向作者发送了 notes on building it in a Windows environment。但是有一组files for windows prebuilt 和你需要的sqlite.jar 和.dll。一旦你在类路径上得到了它,它就很简单了。

      如果这对您来说太过分了,您可以随时启动 sqlite3 CLI 并使用 .schema 命令转储表,并将它们设置在您知道如何连接的数据库中。或者设置和 Ubuntu VM ;)

      【讨论】:

      • 感谢您的帮助。因此,我尝试先运行那些失败的预构建文件(运行 win 64 位但文件是 32 位),然后使用 Visual Studio 2005 编译源代码失败。 6 类似这样的错误:.\SQLite\JDBC2x\JDBCPreparedStatement.java:21: SQLite.JDBC2x.JDBCPreparedStatement 不是抽象的,不会覆盖 java.sql.PreparedStatement
      • 如何在 CLI 中使用第二种方法?如果我先转储表格,是否保留它们之间的 iOS 特定关系?
      • 我不确定 iOS 特定的关系是什么。请记住,sqlite 数据库很少强制执行任何外键约束,因此大多数来自 schemaspy 的 FK 关系都是猜测。
      【解决方案3】:

      我意识到这是一个老问题,但是为了记录,可以让 SchemaSpy 使用 Xerial SQLite JDBC 驱动程序,没有很大的困难,通过为它滚动一个新的 .properties 文件,遵循@987654321 上的说明@

      您真正需要做的就是复制现有的 sqlite.properties,将其重命名为 sqlite-xerial.properties 并更改相关行;例如:

      driver=org.sqlite.JDBC

      description=SQLite-Xerial

      driverPath=sqlite-jdbc-3.7.2.jar

      Xerial 驱动程序不需要 JNI DLL 文件,并且还具有正确获取任何配置的 FK 关系的好处 - 至少在我测试过的 SQLite 3 数据库中是这样。

      在引用也是关键字的表或列名时,它确实会引发一些警告,但这可能是 SchemaSpy 的错误,因为它没有将它们包装在 [] 中。或者架构设计者使用关键字作为表名和列名的错误:)

      【讨论】:

        【解决方案4】:

        我确实想知道为什么您需要获取 sqlite 驱动程序。只是tell SchemaSpy your DB type 是 sqlite,你会没事的。类似的东西

        java -jar schemaSpy.jar -t sqlite -db -o

        【讨论】:

        • 请看我上面的评论。它不是那样工作的。我尝试显示来自 iOS 应用程序的 sqlite 文件。此外,我被要求添加选项 -u 来指定某个用户。有谁知道这可能是什么?
        【解决方案5】:

        通常最好使用latest beta version of SchemaSpy。调用应该类似于针对 MySQL 运行,除了您使用 -t sqlite 指定数据库类型并将“数据库”指向您的 .sqlite 文件。

        SQLite 驱动程序使用 JNI 来实现,因此您需要确保 sqlite_jni.dll 在您的 PATH 中。在 Windows 命令提示符中临时将其添加到 PATH:

        设置 PATH=%PATH%;directoryContainingTheJniDll

        【讨论】:

        • 我这样做了,但收到了 ClassNotFoundException: SQLite.JDBCDriver。好像他正在寻找一个显然不存在的 sqlite.jar 文件......
        猜你喜欢
        • 2012-12-01
        • 2016-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 2013-04-30
        • 1970-01-01
        相关资源
        最近更新 更多