如何将SqlServer数据库移植到MySQL?

时间:2010-02-06 18:02:03

标签: sql mysql sql-server tsql

我有一个我想要移植到MySQL的SqlServer数据库。什么是最好的方法。需要移植的东西是:

  • 表格(和数据)
  • FileStream→MySQL等效?
  • 存储过程
  • 功能

3 个答案:

答案 0 :(得分:5)

数据类型相对类似。

在MySQL中没有与FileStream等效的文件 - 文件必须存储为BLOB,或者在路径存储在数据库中时保存在文件系统上。

远离TSQL意味着:

  • MySQL中没有WITH子句 - 它必须转换为派生表/内联视图
  • 没有TOP语法 - 这些必须转换为使用LIMIT
  • MySQL中没有排名/分析功能 - 无法使用ROW_NUMBERRANKDENSE_RANKNTILE。见this article for alternatives
  • MySQL视图有notoriously limited functionality
    • SELECT语句不能在FROM子句中包含子查询。
    • SELECT语句不能引用系统或用户变量。
    • 在存储的程序中,定义不能引用程序参数或局部变量。
    • SELECT语句不能引用预处理语句参数。
    • 定义中提到的任何表或视图都必须存在。但是,在创建视图后,可以删除定义引用的表或视图。在这种情况下,使用视图会导致错误。要检查此类问题的视图定义,请使用CHECK TABLE语句。
    • 该定义不能引用TEMPORARY表,也不能创建TEMPORARY视图。
    • 视图定义中指定的任何表必须在定义时存在。
    • 您无法将触发器与视图相关联。
    • 从MySQL 5.0.52开始,将检查SELECT语句中列名的别名,最大列长度为64个字符(不是最大别名长度为256个字符)。
  • 必须将动态SQL转换为使用MySQL的Prepared Statement语法

答案 1 :(得分:2)

官方MySQL开发网站上提供了一些guide/article,其中包含一些有用的提示。

答案 2 :(得分:0)

这不适合胆小的人。这篇文章解释了您的目的:

http://searchenterpriselinux.techtarget.com/news/column/0,294698,sid39_gci1187176,00.html