我在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