I have a database on SQL Server 2008 on a Windows server and I want to move all of the data to a MySQL database on a Ubuntu server. I have tried using the SQL Server Import and Export Wizard with the MySQL ODBC driver, and it correctly accesses both databases, but the xml files containing the specifications for type conversion did not exist and the specifications were too limited for me to correctly create them. Does anyone know either how to create the type conversion files or where to get a better tool for transferring this data?
-
1Have you seen this question? It's about replicating data from MySql to MSSQL. Maybe you'll find some hints there.– MarianCommented Jun 3, 2011 at 21:38
-
@Marian Thanks for the link. Using the MySQL server as a linked server in SQL Server seems to be a solution for my problem.– murgatroid99Commented Jun 6, 2011 at 18:00
-
1How much data are we talking about? 5mb? 3TB?– AaronJAndersonCommented Feb 5, 2013 at 23:40
-
I think it was GBs or 10s of GBs, but I don't really remember because this question is from a year and a half ago.– murgatroid99Commented Feb 6, 2013 at 0:25
6 Answers
I have two suggestions:
1) I hate bringing up commercial products but there is a $49.00 tools to Migrate MSSQL to MySQL
2) Try MySQL's MSSQL Migration forums for further suggestions
UPDATE 2011-06-03 18:03 EDT
There is an old product that went EOL back in January 2010 called the MySQL Migration Toolkit. If you can get a hold of it, you can use it.
UPDATE 2011-06-03 18:06 EDT
I found the archives !!! Here is the MySQL Migration Toolkit
UPDATE 2011-06-03 18:11 EDT
Here is the MySQL Migration Toolkit Overview
UPDATE 2011-06-03 19:08 EDT
Another commerical product ($29)
UPDATE 2011-06-03 19:30 EDT
Here is a list of Freeware tools that Migrate MSSQL to MySQL.
UPDATE 2011-06-15 17:47 EDT
Get the WhitePaper (PDF) from Oracle on the Guide to Migrating Microsoft SQL Server to MySQL (Still Commercial)
UPDATE 2012-08-21 01:24 EDT
According to this MySQL WebPage, the section MySQL Workbench: Database Migration Wizard
claims that the MySQL Workbench has the capability of Migrating DB Objects from SQL Server to MySQL.
-
1I would prefer not to use any commercial products if I can avoid them. I tried using the Migration Toolkit, but I think it is incompatible with the newest version of MySQL: the generated SQL insert statements had an enormous number of syntax errors and the generated tables had no rows after running the wizard. The shareware tools also seem to be made to work with older versions of MySQL. Thanks for trying. Commented Jun 6, 2011 at 17:31
Based on Marian's suggestion, I found this answer about replicating in the other direction by setting up the MySQL server as a linked server in MS SQL Server. With MySQL set up as a linked server, I can run SQL queries on both databases at the same time, which provides exactly the functionality I needed to solve this problem.
Have you looked into using SSIS for this task? This is the ETL tool for SQL Server and it has lots of transformations and logic that could help you perform this task.
-
The Import/Export Wizard I mentioned using actually creates SSIS packages. The problem I had was that SSIS uses XML files to store data about how to convert between types in different database management systems, and those files did not exist for MySQL. Commented Jun 6, 2011 at 17:37
MySQL Workbench can do this:
http://dev.mysql.com/downloads/workbench
It can be installed directly on the MS SQL Server machine (speed advantage!), which needs to be able to access your Ubuntu MySQL Server.
I tried Migration toolkit to import from SQL server to MySQL. But found SQLyog Import external data good. I could schedule the import process and also do necessary mappings to import to an existing table. Download from here.
-
SQLyog is a great tool, but the "import external data" feature is extremely slow. As in several orders of magnitude slower than MySQL Workbench. I wish SQLyog developers would fix the problem, because the interface is much more intuitive than Workbench. But unless you are only importing hundreds of rows than be prepared to wait hours or possibly days for the import to finish. Commented Feb 11, 2017 at 21:13
I recently released etlalchemy to accomplish this task. It is an open-sourced solution which allows migration between any 2 SQL databases with 4 lines of Python. Supported RDBMS's include MySQL, PostgreSQL, Oracle, SQLite and SQL Server.
This will take care of the daunting task of mapping one SQL vendor's column types, to another's. Not only will it transfer and translate schema, it will also migrate all data, indexes and constraints across databases.
To install:
$ pip install etlalchemy
On El Capitan: pip install --ignore-installed etlalchemy
To run:
from etlalchemy import ETLAlchemySource, ETLAlchemyTarget
mssql_db_source = ETLAlchemySource("mssql+pyodbc://username:password@DSN")
mysql_db_target = ETLAlchemyTarget("mysql://username:password@hostname/db_name", drop_database=True)
mysql_db_target.addSource(mssql_db_source)
To get more background on the origins of the project, check out this post. If you get any errors running the tool, open an issue on the github repo and I'll patch it up in less than a week!