Cách xuất dữ liệu từ SQL Server 2005 sang MySQL [đã đóng]


86

Tôi đã SQL Server 2005cố gắng lấy ra nhiều dữ liệu. Tôi đã được cung cấp một cơ sở dữ liệu với gần 300 bảng trong đó và tôi cần biến nó thành một cơ sở dữ liệu MySQL. Cuộc gọi đầu tiên của tôi là sử dụng bcp nhưng tiếc là nó không tạo ra CSV hợp lệ - các chuỗi không được đóng gói, vì vậy bạn không thể xử lý bất kỳ hàng nào có chuỗi có dấu phẩy trong đó (hoặc bất kỳ thứ gì bạn sử dụng làm dấu phân cách) và tôi vẫn sẽ phải viết tay tất cả các câu lệnh tạo bảng, vì rõ ràng CSV không cho bạn biết bất kỳ điều gì về các kiểu dữ liệu.

Sẽ tốt hơn nếu có một công cụ nào đó có thể kết nối với cả SQL Server và MySQL, sau đó tạo một bản sao. Bạn mất các khung nhìn, các thủ tục được lưu trữ, trình kích hoạt, v.v., nhưng không khó để sao chép một bảng chỉ sử dụng các kiểu cơ sở từ DB này sang DB khác ... phải không?

Có ai biết về một công cụ như vậy không? Tôi không bận tâm đến việc nó đưa ra bao nhiêu giả định hay những đơn giản hóa nào xảy ra, miễn là nó hỗ trợ số nguyên, float, datetime và string. Dù sao thì tôi cũng phải thực hiện rất nhiều thao tác cắt tỉa, chuẩn hóa, v.v. nên tôi không quan tâm đến việc lưu giữ các khóa, mối quan hệ hay bất cứ thứ gì tương tự, nhưng tôi cần nhanh chóng tập hợp dữ liệu ban đầu!


1
Tôi đã nghe một vài người sử dụng MSSQL2MySQL thành công, nhưng tôi không thể tự mình đảm bảo điều đó.
Greg Hurlman

1
Tôi nghe nói rằng SQLYob có thể làm được. < webyog.com/en > tại đây: < searchsqlserver.techtarget.com/tip/… >
borjab 22/09/08

Công cụ này chính xác là những gì bạn yêu cầu: Full Convert Enterprise . Đúng, bạn sẽ mất lượt xem, thủ tục và trình kích hoạt, nhưng nó được tối ưu hóa cao cho các bảng lớn. Một giải pháp khác (đắt hơn) dịch tất cả các đối tượng (thủ tục, v.v.) là SqlTran SQL Server sang MySQL
Damir Bulic

1
Câu trả lời tương tự ở đây: stackoverflow.com/questions/11619177/…
Jacob

1
@borjab: SQLyog đã từng làm việc với ODBC trong các phiên bản cũ hơn nhưng không còn nữa, vì vậy nó không phải là một tùy chọn cho công việc này.
BlaM

Câu trả lời:


59

Cách tốt nhất mà tôi đã tìm thấy là MySQL Migration Toolkit do MySQL cung cấp. Tôi đã sử dụng nó thành công cho một số dự án di chuyển lớn.


2
+1 - Bây giờ nó là EOL và MySQL Workbench sẽ bao gồm một plugin di chuyển (phiên bản 5.2 trước đây) nhưng bây giờ hãy sử dụng liên kết sau: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson

không muốn chuyển đổi cột DATE hoặc DATETIME :(
Robert Ivanc

1
Lưu ý: Hiện tại, Bộ công cụ di chuyển MySQL không khả dụng cho Linux (từ dev.mysql.com/doc/migration-toolkit/en/… )
mkirk

1
Lưu ý rằng Bộ công cụ di chuyển SQL của tôi yêu cầu phiên bản 32-bit của JDK 5 cập nhật 8 trở lên (phải là phiên bản 5, phiên bản 6 sẽ không hoạt động), bạn có thể tải xuống tại đây: tinyurl.com/5snd6y3
casterle

9

Sử dụng MSSQL Management Studio, tôi đã chuyển đổi các bảng bằng MySQL OLE DB. Nhấp chuột phải vào cơ sở dữ liệu của bạn và đi tới "Nhiệm vụ-> Xuất dữ liệu" từ đó bạn có thể chỉ định nguồn MsSQL OLE DB, nguồn MySQL OLE DB và tạo ánh xạ cột giữa hai nguồn dữ liệu.

Rất có thể bạn sẽ muốn thiết lập trước cơ sở dữ liệu và các bảng trên MySQL đích (quá trình xuất sẽ muốn tạo các bảng tự động, nhưng điều này thường dẫn đến thất bại). Bạn có thể nhanh chóng tạo các bảng trong MySQL bằng cách sử dụng "Tasks-> Generate Scripts" bằng cách nhấp chuột phải vào cơ sở dữ liệu. Khi các tập lệnh tạo của bạn được tạo, bạn sẽ cần phải thực hiện từng bước và tìm kiếm / thay thế các từ khóa và kiểu tồn tại trong MSSQL thành MYSQL.

Tất nhiên bạn cũng có thể sao lưu cơ sở dữ liệu như bình thường và tìm một tiện ích sẽ khôi phục bản sao lưu MSSQL trên MYSQL. Tuy nhiên, tôi không chắc liệu có tồn tại hay không.


9

Các phiên bản SQL Server 2005 "Standard", "Developer" và "Enterprise" có SSIS , thay thế DTS từ SQL server 2000. SSIS có một kết nối tích hợp với DB của chính nó và bạn có thể tìm thấy một kết nối mà người khác đã viết cho MySQL. Đây là một ví dụ. Sau khi có kết nối, bạn sẽ có thể tạo một gói SSIS để di chuyển dữ liệu giữa cả hai.

Tôi không phải di chuyển dữ liệu từ SQLServer sang MySQL, nhưng tôi tưởng tượng rằng sau khi kết nối MySQL được cài đặt, nó hoạt động giống như di chuyển dữ liệu giữa hai SQLServer DB, điều này khá dễ dàng.


8

Lăn giải pháp PHP của riêng bạn chắc chắn sẽ hoạt động mặc dù tôi không chắc liệu có cách nào tốt để tự động sao chép lược đồ từ DB này sang DB khác hay không (có thể đây là câu hỏi của bạn).

Nếu bạn chỉ đang sao chép dữ liệu và / hoặc bạn vẫn cần mã tùy chỉnh để chuyển đổi giữa các lược đồ đã sửa đổi giữa hai DB, tôi khuyên bạn nên sử dụng PHP 5.2+ và các thư viện PDO. Bạn sẽ có thể kết nối bằng PDO ODBC (và sử dụng trình điều khiển MSSQL). Tôi đã gặp rất nhiều vấn đề khi chuyển các trường văn bản lớn và các ký tự nhiều byte từ MSSQL sang PHP bằng các thư viện khác.


6

Một công cụ khác để thử là bộ SQLMaestro . Công cụ chính xác có một chút khó khăn nhưng chúng có nhiều công cụ khác nhau, cả miễn phí và mua để xử lý nhiều tác vụ khác nhau cho nhiều nền tảng cơ sở dữ liệu. Tôi khuyên bạn nên thử công cụ Data Wizard trước tiên cho MySQL, vì tôi tin rằng nó sẽ có công cụ "nhập" thích hợp mà bạn cần.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.