我在H2Database文件中有一些数据,我想将它转换为MySQL .sql
数据库文件。我可以遵循哪些方法?如何将H2Database数据库文件转换为MySQL数据库.sql文件?
回答
的H2数据库允许您使用SCRIPT
SQL语句或Script command line tool创建SQL脚本。可能你需要调整脚本,然后才能对MySQL数据库运行它。
由H2数据库生成的SQL脚本不与MySQL支持的SQL完全兼容。您将不得不手动更改SQL脚本。这要求你很好地了解H2和MySQL。
为了避免这个问题,替代,可能简单的从H2将数据复制到MySQL的方式是与SQuirreL DB Copy Plugin插件一起使用第三方工具,如SQuirreL SQL。 (首先,你需要SQuirrel安装SQL以及对松鼠DB复制插件的顶部。)
我将SQuirreL SQL与SQuirreL DB Copy Plugin插件一起使用。但它确实没有工作,它给 复制失败:未选择(SQL埃罗代码= 1046)数据库 失败的SQL是: CREARE表..... .... ... .. (没有绑定变量) 如何解决这个问题。 – 2012-07-11 08:58:05
好吧,我想你应该在SQuirreL DB Copy插件邮件列表中询问。但是我想知道,如果错误消息是“没有数据库选择” - 你选择了一个数据库吗? – 2012-07-11 10:07:55
在左上角有一个名为“目录”的下拉列表,在那里选择要将表格复制到的数据库。 此问题可能已经解决,但今天我遇到了同样的问题,并将此评论添加到具有相同问题的其他人 – 2015-06-03 08:27:39
我创建一个Groovy脚本,它从H2到MySQL迁移。从那里你可以做一个mysqldump。它要求表存在于Mysql数据库中。它应该适用于较小的更改的其他DBMS。
@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)
}
在回答托马斯·穆勒,SquirrelSQL为我工作得很好。 下面是该过程适用于Windows的H2数据库转换:
转到“驱动列表”,这里的一切都是由默认的红色。
选择“H2”驱动程序,并在“Extra Class Path”中指定“h2-1.3.173.jar”的完整路径(例如 示例)。 H2驱动程序应在列表中显示蓝色 检查。
选择目标驱动器(PostgreSQL的,MySQL的),并且 做同样的,例如对PostgreSQL,指定 的完整路径“PostgreSQL相关9.4-1201.jdbc41.jar”中上等路径。 H2:配置您的JDBC链,例如复制/粘贴您在启动H2时获得的jdbc链,然后针对您的目标数据库执行相同的操作:单击“别名”,然后单击“+”在“+”上,配置和“测试”。
当你在你的别名双击,你应该看到一个新的标签数据库里面的一切。转到源数据库中的表格,在所有表格上进行多重选择,然后右键单击:“复制表格”。
转到从别名目标数据库,并做了“粘贴表”。当完全复制所有表时,也会生成外键引用。
检查您的主键:从H2到PostgreSQL,我失去了主键约束和自动递增功能。 您也可以通过右键单击重命名列和表:“重构”。我使用它在完全复制后重命名保留字列,方法是禁用名称检查选项。
这对我很好。
- 1. 将CSV文件转换为Mysql(.sql)数据库文件?
- 2. 如何将SDF文件数据库转换为SqlServer数据库
- 3. 将SQL数据库/ .SQL文件转换为CSV文件
- 4. 如何将Microsoft Excel xlsx文件转换为mysql数据库.sql文件
- 5. 如何将MySQL数据库文件(.sql)转换为PHP中的SQLite文件?
- 6. 将MySQL .sql文件转换为MS Access数据库
- 7. 如何将mysql数据库/表格数据转换为cassandra数据文件...?
- 8. 将“DBML”文件转换为“SQL数据库文件”
- 9. 如何将excel文件转换为mysql数据库?
- 10. 将文本文件转换为MySQL数据库
- 11. 将SQL Server数据库转换为MySQL
- 12. 如何将db3文件(Palm Pre数据库)转换为MySQL文件?
- 13. 将SQL Server数据库转换为MYSQL数据库
- 14. 如何将PHPMyAdmin SQL转储文件导入到MySQL数据库?
- 15. 如何将Visual Foxpro数据库转换为SQL Server数据库
- 16. 如何在SQL Server 2005数据库文件转换为Excel
- 17. 在java中将MySQL数据库转换为SQLite单文件
- 18. 将Stardict字典文件转换为MySQL数据库
- 19. 将CSV文件转换为Mysql数据库PHP
- 20. 将XML文件转换为SQL数据库的自动方式?
- 21. 将数据库定义文件转换为SQL
- 22. 将XML文件转换为MS SQL Server数据库
- 23. 如何将XML文件转换为数据库?
- 24. 如何将excel文件转换为数据库?
- 25. 如何将数据库查询的行转换为XML文件?
- 26. 如何将JSON文件转换为SQLite数据库
- 27. 如何将sqlite数据库转换为csv文件格式?
- 28. 将SQL Server CE版数据库文件(.sdf)转换为支持sqlite3的数据库文件
- 29. 将SQL数据库转换为.sql
- 30. 将SQL Azure转换为SQL数据库
我试图做到这一点。但它失败了。你能给我一个示例脚本吗? – 2012-07-07 16:59:25
正如我写的,你可能必须修改脚本,然后才能对MySQL运行它。 – 2012-07-07 21:06:21
我必须做些什么修改?总是我得到错误。我使用MySQL 5.1.61。 – 2012-07-08 02:52:28