MySQL到SQL Server传输数据

时间:2009-12-02 20:07:10

标签: mysql sql-server ssis dts

我需要将MySQL数据库中已存在的数据转换为SQL Server数据库。

这里需要注意的是旧数据库的设计很差,但是新的数据库是3N形式。有没有人有关于如何做到这一点的任何提示?我有SSMS 2005.

  1. 我可以使用它来连接MySQL数据库并创建DTS吗?或者我需要使用SSIS吗?
  2. 我是否需要编写MySQL DB脚本并将每个语句更改为“插入”到SQL Server DB中?
  3. 有没有人经历过这个?请帮助!!!

6 个答案:

答案 0 :(得分:10)

this link。我们的想法是通过MySQL ODBC驱动程序将MySQL数据库添加为SQL Server中的链接服务器。然后,您可以通过SSMS在MySQL数据库上执行任何您喜欢的操作,包括将数据复制到SQL Server中。

祝贺你们进入RDBMS世界!

答案 1 :(得分:5)

SSIS旨在做这种事情。第一步是手动绘制每个数据将在新结构中的位置。所以你的旧表有四个字段,在你的新结构中,fileds1和2转到表a,字段3和4转到表b,但你还需要从表a获得自动生成的id。记下数据类型已更改的位置,您可能需要进行调整,或者您需要的文件位置,以及之前不需要数据等。

我通常做的是创建临时表。将数据以非规范化形式放入一个临时表中,然后转到规范化的临时表,并在那里进行清理,并在将它们添加到临时表后立即添加新的ID。如果从非规范化数据库迁移到规范化数据库,则需要做的一件事是,在将父表插入实际生产表之前,需要从父表中删除重复项。您可能还需要执行dataclean,因为新结构中可能需要fileds,这是旧的或数据转换问题中不需要的因为转移到更好的数据类型(例如,如果您在varchar字段中将旧日期存储在旧数据库中但是在新数据库中正确移动到datetime,您可能会有一些没有有效日期的记录。

您需要考虑的另一个问题是如何将旧记录ID转换为新记录ID。

这不是一件容易的事,但如果你有条不紊地花时间和工作,这是可行的。现在不是尝试快捷方式的时候。

答案 2 :(得分:0)

您需要的是ETL(提取,转换,加载)工具。

http://en.wikipedia.org/wiki/Extract,_transform,_load#Tools

答案 3 :(得分:0)

根据原始数据库设计和新数据库设计,我真的不知道“ETL”工具会给你带来多大的帮助。在我的职业生涯中,我不得不做一些以上的数据迁移,我们通常总是必须设计一个特殊的实用程序,它将使用旧数据库中的记录更新新的数据库,是的,我们使用所有更新/插入编码完成将转换数据的陈述。

我不知道您的数据库有多少个表,但如果它们不是太多,那么您可以考虑使用grunt root。这是一种保证可以工作的技术。

答案 4 :(得分:0)

我已经朝另一个方向做了这个,SSIS工作正常,尽管我可能需要使用脚本任务来处理轻微的数据类型怪异。 SSIS does ETL

答案 5 :(得分:0)

如果您在SSMS中转到数据库并右键单击,则在任务下应该是“导入数据”的选项。你可以尝试使用它。它基本上只是一个为您创建SSIS包的向导,它可以自动为您运行,也可以保存,然后根据需要进行更改。

最大的问题是如何转换数据。这包含了许多你没有包含的细节(无论如何你可能包含的内容太多了。)

我确信SSIS可以处理您需要做的任何转换,以便将其从旧格式更改为新格式。另一种方法是将表导入MS SQL,直接导入到临时表中,然后使用SQL代码将数据转换为3NF表。这都是你最舒服的问题。如果你走第二条路线,那么可以使用我在SSMS中提到的导入过程。它甚至会为您创建目标表。只要确保你给他们一个独特的名字,可能在他们前面添加“STG_”或其他东西。

Davud提到了链接服务器。这绝对是你可以去的另一种方式(并得到了我的upvote)。就个人而言,我更喜欢将表复制到MS SQL中,因为链接服务器有时会有怪异,特别是涉及不在不同提供程序之间映射的数据类型时。如果您必须重新运行或更正部分数据,那么将所有表都放在MS SQL中也可能会更快并节省时间。正如我所说,链接服务器方法也可能没问题。