2011-04-15 36 views
5

Estoy intentando hacer un volcado sqlite con SchemaSpy. Tengo SchemaSpy en funcionamiento y pude volcar correctamente una base de datos MySQL.Usando SchemaSpy para visualizar una base de datos SQLite (windows)

Ahora tengo un archivo .sqlite (desde una aplicación iOS) y un controlador sqlite de Christian Werner (http://www.ch-werner.de/javasqlite/overview-summary.html). Un ejemplo sobre here explica cómo trabajar con eso, pero para ser honesto, no entiendo qué hacer.

¿Hay alguien que sepa cómo puedo usar SchemaSpy en Windows? No es necesario que use la herramienta GUI.

+1

¿Alguien con algo de ayuda? – Thorben

Respuesta

0

Me pregunto por qué necesita obtener el controlador sqlite. Solo tell SchemaSpy your DB type es sqlite y estará bien. Algo así como

java-jar schemaSpy.jar -t SQLite db < su archivo > -o <salida>

+0

Por favor, vea mi comentario anterior. No funciona de esa manera. Intenté mostrar un archivo sqlite desde una aplicación de iOS. Además, se me pidió que añadiera la opción -u para especificar un determinado usuario. Alguien sabe lo que esto podría ser? – Thorben

0

Por lo general es mejor para agarrar el latest beta version of SchemaSpy. La invocación debería ser similar a correr contra MySQL, excepto que especifique su tipo de base de datos con -t sqlite y señale la "base de datos" a su archivo .sqlite.

Los controladores SQLite usan JNI para su implementación, por lo que deberá asegurarse de que sqlite_jni.dll se encuentre en su RUTA. Para añadir temporalmente a su PATH en un símbolo del sistema de Windows:

set PATH =% PATH%; directoryContainingTheJniDll

+0

Lo hice pero recibí una ClassNotFoundException: SQLite.JDBCDriver. Parece que está buscando un archivo sqlite.jar que obviamente no está allí ... – Thorben

0

Soy el autor de uno de los artículos que usted ha mencionado.

Necesita compilar el controlador schemaspy JDBC. Fue escrito para UNIX pero alguien envió al autor notes on building it in a Windows environment. Pero hay un conjunto de files for windows prebuilt con sqlite.jar y .dll que necesita. Una vez que tienes eso en el classpath es sencillo.

Si esto es demasiado para usted, siempre puede arrancar la CLI sqlite3 y usar el comando .schema para volcar las tablas y configurarlas en una base de datos que sepa cómo conectarse. O configurar y Ubuntu VM;)

+0

Gracias por su ayuda. Así que traté de ejecutar esos archivos preconstruidos primero que fallaron (ejecutando win 64bit pero los archivos son de 32 bits) y luego compilar la fuente con Visual Studio 2005 que no pudo. 6 Errores como este:. \ SQLite \ JDBC2x \ JDBCPreparedStatement.java: 21: SQLite.JDBC2x.JDBCPreparedStatement no es abstracto y no anula el método abstracto setNClob (int, java.io.Re ader) en java.sql.PreparedStatement – Thorben

+0

¿Cómo usar su segundo enfoque con CLI? Si vuelco las tablas primero, ¿se guardan las relaciones específicas de iOS entre ellas? – Thorben

+0

No estoy seguro de cuál sería una relación específica de iOS. Tenga en cuenta que las bases de datos sqlite rara vez imponen restricciones de clave externa, por lo que la mayoría de las relaciones FK fuera de schemaspy serán conjeturas. – jldugger

2

También encontré este problema pero finalmente lo hice funcionar. Necesita la DLL para la biblioteca de SQLite.

Puede descargarlo here, y luego se puede poner en la carpeta system32 de la instalación de Windows (C: \ Windows \ System32 por ejemplo)

Por último, no se olvide de especificar la ruta exacta del controlador JDBC :

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

comprendo que esto es una cuestión de edad, sino también para el registro es posible hacer SchemaSpy utilizar el controlador Xerial SQLite JDBC, sin una gran cantidad de dificultades, haciendo rodar un nuevo archivo .properties para ello, siguiendo las instrucciones en http://schemaspy.sourceforge.net/dbtypes.html

Todo lo que necesita hacer es copiar las propiedades sqlite.properties existentes, renombrándolas a algo como sqlite-xerial.propiedades y cambiar las líneas relevantes; por ejemplo:

driver=org.sqlite.JDBC

description=SQLite-Xerial

driverPath=sqlite-jdbc-3.7.2.jar

El conductor Xerial no necesita el archivo DLL JNI y también tiene la ventaja de recoger cualquier relación FK configurados correctamente - al menos con la base de datos SQLite 3 con la que lo he probado.

Lanza algunas advertencias al hacer referencia a nombres de tablas o columnas que también son palabras clave, pero puede ser culpa de SchemaSpy por no incluirlos en []. O fallas de los diseñadores de esquemas para usar palabras clave como nombres de tablas y columnas :)

Cuestiones relacionadas