Tôi có một số dữ liệu trong H2Database tệp và tôi muốn chuyển đổi nó thành tệp cơ sở dữ liệu MySQL .sql
. Các phương pháp tôi có thể làm theo là gì?Làm thế nào để chuyển đổi tệp cơ sở dữ liệu H2Database thành tệp cơ sở dữ liệu MySQL .sql?
Trả lời
Cơ sở dữ liệu H2 cho phép bạn tạo tập lệnh SQL bằng cách sử dụng câu lệnh SQL SCRIPT
hoặc Script command line tool. Có thể bạn sẽ cần phải chỉnh sửa kịch bản trước khi bạn có thể chạy nó với cơ sở dữ liệu MySQL.
Tập lệnh SQL được tạo bởi cơ sở dữ liệu H2 không hoàn toàn tương thích với SQL được MySQL hỗ trợ. Bạn sẽ phải thay đổi tập lệnh SQL theo cách thủ công. Điều này đòi hỏi bạn phải biết cả H2 và MySQL khá tốt.
Để tránh vấn đề này, một cách thay thế, có lẽ đơn giản hơn để sao chép dữ liệu từ H2 sang MySQL là sử dụng công cụ của bên thứ 3 chẳng hạn như SQuirreL SQL cùng với plugin SQuirreL DB Copy Plugin. (Đầu tiên bạn cần phải cài đặt SquirreL SQL và trên hết là SquirreL DB Copy Plugin.)
Tôi đã sử dụng SquirreL SQL cùng với plugin SQuirreL DB Copy Plugin. Nhưng nó không làm việc nó mang lại cho Sao chép thất bại: Không có cơ sở dữ liệu được lựa chọn (SQL Erro Mã = 1046) SQL Lỗi là: CREARE TABLE ..... .... ... .. (Không có biến liên kết) Cách sửa lỗi này. –
Vâng, tôi đoán bạn nên hỏi tại danh sách gửi thư SquirreL DB Copy Plugin. Nhưng tôi tự hỏi, nếu thông báo lỗi là "Không có cơ sở dữ liệu chọn" - bạn đã chọn một cơ sở dữ liệu? –
Ở góc trên bên trái, có một danh sách thả xuống được gọi là "Danh mục", có chọn cơ sở dữ liệu mà bạn muốn sao chép các bảng. Sự cố này có thể đã được giải quyết, nhưng tôi đã gặp phải vấn đề tương tự ngay hôm nay và thêm nhận xét này cho người khác có cùng vấn đề –
Tôi đã tạo một kịch bản Groovy thực hiện di chuyển từ h2 sang mysql. Từ đó bạn có thể làm một mysqldump. Nó đòi hỏi rằng các bảng tồn tại trong cơ sở dữ liệu Mysql. Nó sẽ làm việc cho DBMS ohter với những thay đổi nhỏ.
@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)
}
Để trả lời cho Thomas Mueller, SquirrelSQL đã làm việc tốt cho tôi. Dưới đây là thủ tục cho Windows để chuyển đổi cơ sở dữ liệu H2:
Đến "danh sách trình điều khiển", nơi mà tất cả mọi thứ là màu đỏ theo mặc định.
Chọn trình điều khiển "H2" và chỉ định đường dẫn đầy đủ tới "h2-1.3.173.jar" (ví dụ ) trong "Đường dẫn lớp bổ sung". Trình điều khiển H2 sẽ hiển thị một kiểm tra màu xanh trong danh sách.
Chọn tài xế mục tiêu của bạn (PostgreSQL, MySQL), và làm tương tự, ví dụ cho PostgreSQL, chỉ định đường dẫn đầy đủ đến "postgresql-9.4-1201.jdbc41.jar" trong hảo hạng Path.
Đi tới "Bí danh", sau đó nhấp vào "+" cho H2: định cấu hình chuỗi JDBC của bạn, ví dụ: sao chép/dán chuỗi jdbc bạn có được khi khởi chạy H2 và thực hiện tương tự cho cơ sở dữ liệu đích: trên "+", định cấu hình và "kiểm tra".
Khi bạn nhấp đúp vào bí danh của mình, bạn sẽ thấy mọi thứ bên trong cơ sở dữ liệu của mình trong Tab mới. Chuyển đến các bảng trong cơ sở dữ liệu nguồn, thực hiện chọn nhiều trên tất cả các bảng của bạn và thực hiện nhấp chuột phải: "Sao chép Bảng".
Chuyển đến cơ sở dữ liệu đích của bạn từ Bí danh và thực hiện "Dán bảng". Khi tất cả các bảng được sao chép hoàn toàn, các tham chiếu khóa ngoài cũng được tạo ra.
Kiểm tra các khóa chính của bạn: từ H2 đến PostgreSQL, tôi đã mất các ràng buộc khóa chính và khả năng tăng tự động. Bạn cũng có thể đổi tên cột và bảng bằng cách nhấp chuột phải: "refactor". Tôi đã sử dụng nó để đổi tên các cột từ dành riêng sau khi sao chép đầy đủ, bằng cách tắt tùy chọn kiểm tra tên.
Điều này phù hợp với tôi.
- 1. Cách chuyển đổi cơ sở dữ liệu Visual Foxpro sang cơ sở dữ liệu SQL Server
- 2. Cách tốt nhất để chuyển đổi cơ sở dữ liệu mysql thành cơ sở dữ liệu sqlite là gì?
- 3. Chuyển đổi cơ sở dữ liệu Postgres thông thường thành cơ sở dữ liệu không gian
- 4. Chuyển đổi tệp .db cơ sở dữ liệu sang .csv
- 5. Chuyển đổi cơ sở dữ liệu MS SQL Server (tệp .mdf) sang MySQL thông qua PhpMyAdmin?
- 6. Làm cách nào để di chuyển Sơ đồ cơ sở dữ liệu SQL Server sang cơ sở dữ liệu khác?
- 7. Di chuyển cơ sở dữ liệu MySQL phát triển sang cơ sở dữ liệu sản xuất
- 8. Chia nhỏ tệp mysqldump với nhiều cơ sở dữ liệu, theo cơ sở dữ liệu
- 9. Tệp cơ sở dữ liệu bị khóa
- 10. nơi MySQL lưu trữ tệp cơ sở dữ liệu?
- 11. Java, cách thay đổi cơ sở dữ liệu hiện tại sang cơ sở dữ liệu khác?
- 12. Cách thay thế tệp cơ sở dữ liệu sqlite hiện có bằng tệp cơ sở dữ liệu mới trong android
- 13. Thả cơ sở dữ liệu SQL Server
- 14. Lỗi khi kéo cơ sở dữ liệu mysql trong cơ sở dữ liệu mysql cục bộ
- 15. Làm thế nào để di chuyển cơ sở dữ liệu SQL Server sang MySQL?
- 16. Chuyển dữ liệu từ cơ sở dữ liệu này sang cơ sở dữ liệu khác
- 17. Cách tự động để chuyển đổi các tệp XML sang cơ sở dữ liệu SQL?
- 18. MIME loại tệp cơ sở dữ liệu SQL Server BACKUP
- 19. Đổi tên tệp dữ liệu cơ sở dữ liệu trong SQL Server 2005
- 20. SQL Server: Làm thế nào để biết cơ sở dữ liệu là một cơ sở dữ liệu hệ thống?
- 21. Làm thế nào để tạo dự án cơ sở dữ liệu từ cơ sở dữ liệu SQL Server hiện tại?
- 22. Làm thế nào để chèn dữ liệu mẫu vào bảng cơ sở dữ liệu MySQL
- 23. Sao lưu cơ sở dữ liệu MySQL
- 24. Làm cách nào để chuyển dữ liệu giữa 2 cơ sở dữ liệu MySQL?
- 25. Làm thế nào để thay đổi cơ sở dữ liệu MySQL thành UTC?
- 26. Làm cách nào để thay đổi chủ sở hữu của cơ sở dữ liệu SQL Server?
- 27. Làm cách nào để xóa cơ sở dữ liệu MySQL?
- 28. MySQL kiểu dữ liệu cơ sở dữ liệu
- 29. Bảng xóa MySQL - Cơ sở dữ liệu hiện tại hoặc mọi cơ sở dữ liệu?
- 30. Cấu trúc cơ sở dữ liệu SQL
Tôi đã cố gắng thực hiện. Nhưng nó không thành công.Bạn có thể cho tôi một kịch bản mẫu cho nó –
Như tôi đã viết, bạn có thể phải sửa đổi kịch bản trước khi bạn có thể chạy nó với MySQL. –
Sửa đổi tôi phải làm là gì? luôn luôn nhận được lỗi. Im sử dụng mysql 5.1.61. –