Tengo algunos datos en el archivo H2Database y quiero convertirlo a MySQL .sql
archivo de base de datos. ¿Cuáles son los métodos que puedo seguir?Cómo convertir el archivo de base de datos H2Database a la base de datos MySQL archivo .sql?
Respuesta
La base de datos H2 le permite crear un script SQL utilizando la instrucción SQL SCRIPT
o el Script command line tool. Es posible que necesite modificar el script antes de poder ejecutarlo en la base de datos MySQL.
El script SQL generado por la base de datos H2 no es totalmente compatible con el SQL admitido por MySQL. Tendría que cambiar el script SQL manualmente. Esto requiere que conozcas bastante bien H2 y MySQL.
Para evitar este problema, una forma alternativa, probablemente más simple de copiar los datos de H2 a MySQL es utilizar una herramienta de terceros como SQuirreL SQL junto con el complemento SQuirreL DB Copy Plugin. (Primero debe instalar SQuirreL SQL y además el complemento SQuirreL DB Copy.)
Utilicé SQuirreL SQL junto con el plugin SQuirreL DB Copy Plugin. Pero sí hay trabajo que da Copia falló: Sin base de datos seleccionada (Código Erro SQL = 1,046) SQL Error era: TABLA CREARE ..... .... ... .. (Sin variables de vinculación) Cómo solucionar esto. –
Bueno, supongo que deberías preguntar en la lista de correo de SQuirreL DB Copy Plugin. Pero me pregunto, si el mensaje de error es "No database select", ¿seleccionó una base de datos? –
En la esquina superior izquierda, hay un menú desplegable llamado "Catálogo", allí selecciona la base de datos a la que desea copiar las tablas. Es posible que este problema se haya resuelto, pero hoy hago clic en el mismo problema y agrego este comentario para que otra persona tenga el mismo problema –
Creé un script de Groovy que realiza la migración de h2 a mysql. Desde allí podrías hacer un mysqldump. Requiere que las tablas existan en la base de datos Mysql. Debería funcionar para DBMS con cambios menores.
@Grapes(
[
@Grab(group='mysql', module='mysql-connector-java', version='5.1.26'),
@Grab(group='com.h2database', module='h2', version='1.3.166'),
@GrabConfig(systemClassLoader = true)
])
import groovy.sql.Sql
def h2Url='jdbc:h2:C:\\Users\\xxx\\Desktop\\h2\\sonardata\\sonar'
def h2User='sonar'
def h2Passwd='sonar'
def mysqlUrl='jdbc:mysql://10.56.xxx.xxx:3306/sonar?useunicode=true&characterencoding=utf8&rewritebatchedstatements=true'
def mysqlUser='sonar'
def mysqlPasswd='xxxxxx'
def mysqlDatabase='sonar'
sql = Sql.newInstance(h2Url, h2User, h2Passwd, 'org.h2.Driver')
def tables = [:]
sql.eachRow("select * from information_schema.columns where table_schema='PUBLIC'") {
if(!it.TABLE_NAME.endsWith("_MY")) {
if (tables[it.TABLE_NAME] == null) {
tables[it.TABLE_NAME] = []
}
tables[it.TABLE_NAME] += it.COLUMN_NAME;
}
}
tables.each{tab, cols ->
println("processing $tab")
println("droppin $tab"+"_my")
sql.execute("DROP TABLE IF EXISTS "+tab+"_my;")
sql.execute("create linked table "+tab+"_my ('com.mysql.jdbc.Driver', '"+mysqlUrl+"', '"+mysqlUser+"', '"+mysqlPasswd+"', '"+mysqlDatabase+"."+tab.toLowerCase()+"');")
sql.eachRow("select count(*) as c from " + tab + "_my"){println("deleting $it.c entries from mysql table")}
result = sql.execute("delete from "+tab+"_my")
colString = cols.join(", ")
sql.eachRow("select count(*) as c from " + tab){println("starting to copy $it.c entries")}
sql.execute("insert into " + tab + "_my ("+colString+") select "+colString+" from " + tab)
}
En respuesta a Thomas Mueller, SquirrelSQL funcionó bien para mí. Aquí se describe el procedimiento para Windows para convertir una base de datos H2:
Ir a "lista de los conductores", donde todo es de color rojo por defecto.
Seleccione el controlador "H2" y especifique la ruta completa a "h2-1.3.173.jar" (para el ejemplo ) en "Ruta de clase adicional". El controlador H2 debe mostrar una marca azul en la lista.
seleccione la unidad de destino (PostgreSQL, MySQL), y hacer lo mismo, por ejemplo, para PostgreSQL, especifique la ruta completa a "postgresql-9.4-1201.jdbc41.jar" en Camino de calidad superior.
Vaya a "Alias", luego haga clic en "+" para H2: configure su cadena JDBC, por ejemplo copie y pegue la cadena jdbc que obtiene cuando ejecute H2 y haga lo mismo con su base de datos de destino: haga clic en "+", configure y "prueba".
Cuando hace doble clic en su alias, debería ver todo lo que está dentro de su base de datos en una nueva pestaña. Vaya a las tablas en la base de datos de origen, haga una selección múltiple en todas sus tablas y haga clic con el botón derecho: "Copiar tabla".
Vaya a su base de datos de destino desde Alias, y haga una "Tabla de pegar". Cuando todas las tablas se copian por completo, también se generan las referencias de clave externa.
Comprueba tus claves principales: de H2 a PostgreSQL, perdí las restricciones de la clave principal y la capacidad de autoincremento. También puede cambiar el nombre de columnas y tablas haciendo clic con el botón derecho: "refactorizar". Lo usé para cambiar el nombre de las columnas de palabras reservadas después de la copia completa, al deshabilitar las opciones de verificación de nombre.
Esto funcionó bien para mí.
- 1. Crear base de datos MySQL con el archivo .SQL
- 2. Cómo convertir una base de datos MySQL a XML?
- 3. ¿Cómo insertar un archivo en la base de datos MySQL?
- 4. cómo puede convertir la base de datos BDC a sql
- 5. MySQL: ¿Cómo convertir una base de datos a solo lectura?
- 6. Convertir la base de datos del servidor MS SQL (archivo .mdf) a MySQL a través de PhpMyAdmin?
- 7. Restaurar archivo .bak a la base de datos remota
- 8. Exportación de Blob desde la base de datos MySQL a un archivo con solo SQL
- 9. importación de base de datos MySQL
- 10. Convertir base de datos SDF a MDF
- 11. Importar base de datos MySQL en un servidor MS SQL
- 12. Convertir archivo .db de base de datos en .csv
- 13. Cómo copiar una tabla de una base de datos mysql a otra base de datos mysql
- 14. Convertir el archivo BibTex a las entradas de la base de datos usando Python
- 15. Cambiar el nombre del archivo de datos de la base de datos en SQL Server 2005
- 16. MySQL - seleccione la base de datos
- 17. archivo de base de datos Sqlite3 extensión
- 18. ¿Cómo volcar la base de datos mysql?
- 19. Error al tirar de la base de datos mysql en la base de datos mysql local
- 20. Base de datos C# en un archivo
- 21. cómo agregar súper privilegios a la base de datos mysql?
- 22. ¿Cómo exportar la base de datos de SQL Server a MySQL?
- 23. Rieles, cómo migrar datos de la base de datos de desarrollo sqlite3 a la base de datos de producción MySQL?
- 24. Archivo plano vs base de datos: ¿velocidad?
- 25. Importar XML a la base de datos SQL
- 26. ¿Cómo puedo ejecutar un archivo de texto SQL en una base de datos MySQL?
- 27. Tienda Opencv a la base de datos
- 28. Agregar archivo HTML a la base de datos SQLite
- 29. Convertir un archivo .bak a .SQL archivo
- 30. SQL Compact Edition 3.5 - El acceso a la base de datos de archivo no está permitido
Traté de hacerlo. Pero falla.¿Me puede dar un script de ejemplo –
Cuando escribí, puede que tenga que modificar el script antes de poder ejecutarlo contra MySQL. –
¿Cuáles son las modificaciones que debo hacer? siempre estoy recibiendo un error. Estoy usando mysql 5.1.61. –