使用SchemaSpy可视化SQLite数据库(windows)

使用SchemaSpy可视化SQLite数据库(windows),windows,ios,sqlite,plot,schemaspy,Windows,Ios,Sqlite,Plot,Schemaspy,我正在尝试使用SchemaSpy进行sqlite转储。 我启动并运行了SchemaSpy,能够正确地转储MySQL数据库 现在我有了一个.sqlite文件(来自iOS应用程序)和一个Christian Werner()的sqlite驱动程序。一个例子解释了如何处理这个问题,但老实说,我不知道该怎么办 有人知道我如何在Windows上使用SchemaSpy吗?不过,我没有必要使用GUI工具。我确实想知道为什么需要使用sqlite驱动程序。就是sqlite,你会没事的。差不多 java-jarsch

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

现在我有了一个.sqlite文件(来自iOS应用程序)和一个Christian Werner()的sqlite驱动程序。一个例子解释了如何处理这个问题,但老实说,我不知道该怎么办


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

我确实想知道为什么需要使用sqlite驱动程序。就是sqlite,你会没事的。差不多


java-jarschemaspy.jar-tsqlite-db-o通常最好抓取。调用应该类似于在MySQL上运行,不同的是您使用-t sqlite指定数据库类型,并将“数据库”指向.sqlite文件

SQLite驱动程序使用JNI实现,因此您需要确保SQLite_JNI.dll位于您的路径中。要在Windows命令提示符中将其临时添加到路径中,请执行以下操作:

设置路径=%PATH%;包含JNIDL的目录


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

您需要编译schemaspy JDBC驱动程序。它是为UNIX编写的,但有人将作者发送了过来。但是有一组与sqlite.jar和.dll一起使用的代码是您需要的。一旦在类路径上实现了这一点,就很简单了


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

我也遇到了这个问题,但最终还是解决了。您需要SQLite库的DLL

您可以下载它,然后将其放在windows安装的system32文件夹中(例如C:\windows\system32)

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

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

我意识到这是一个老问题,但是为了记录在案,可以让SchemaSpy使用Xerial SQLite JDBC驱动程序,而不需要太大的困难,方法是按照上的说明滚动一个新的.properties文件

您真正需要做的就是复制现有的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没有将它们包装到
[]
中的错误。或者模式设计人员使用关键字作为表名和列名的错误:)

我这样做了,但收到了ClassNotFoundException:SQLite.JDBCDriver。似乎他正在寻找一个sqlite.jar文件,显然不在那里……请看我上面的评论。这样不行。我尝试从iOS应用程序显示sqlite文件。另外,我被要求添加选项-u来指定某个用户。有人知道这可能是什么吗?谢谢你的帮助。因此,我尝试先运行那些预构建的文件,但失败了(运行win 64位,但文件是32位),然后使用Visual Studio 2005编译源代码,但失败了。6个类似这样的错误:.\SQLite\JDBC2x\JDBCPreparedStatement.java:21:SQLite.JDBC2x.JDBCPreparedStatement不是抽象的,并且不会覆盖java.sql.preparedStatement中的抽象方法setNClob(int,java.io.Re-ader)如何在CLI中使用第二种方法?如果我先转储表,它们之间是否保留iOS特定的关系?我不确定iOS特定的关系是什么。请记住,sqlite数据库很少强制任何外键约束,因此schemaspy之外的大多数FK关系都是猜测。