2008-09-17 58 views

回答

3

DDL语句本质上是数据库供应商特定的。尽管它们具有相同的基本结构,但每个供应商对于如何定义类型,索引,约束等都有其自己的看法。另一方面,DML语句相当便于携带。因此,我建议:

  • 转储数据库没有任何数据(的mysqldump --no数据)来获取架构
  • 做必要的修改以获得装上其他数据库的架构 - 这些都需要通过完成手(但一些搜索/替换是可能的)
  • 转储具有扩展嵌入式数据关闭,没有创建表(--extended嵌= 0 --no创建-INFO)
  • 运行针对所得到的脚本其他数据库。

这应该做你想做的。

但是,将应用程序移植到不同的数据库供应商时,还需要其他许多事情;移动模式和数据很容易。检查引入的错误,不同的行为和性能测试是困难的。

至少测试应用程序中每个查询在新数据库上的有效性。理想地做更多。

0

从SQL Server 2000或2005,你可以把它生成的对象的脚本,但我不知道他们会如何转移到其他RDBMS。

0

生成脚本选项可能是最简单的方法。毫无疑问,你必须对一些数据类型进行一些搜索/替换。

1

这是一种强硬。除非你有一个非常简单的数据库结构和vanilla类型(varchar,integer等),否则你可能会获得编写迁移工具的最佳结果。在像Perl这样的语言中(通过DBI),这非常简单。该程序基本上是一个从一个数据库读取并插入另一个数据库的回声循环。 Google知道这类代码的例子。

除了显而易见的移动数据的问题,还有一些数据类型代表的更微妙的问题。例如,MS SQL的日期时间字段与MySQL的格式不同。其他数据类型(如BLOB)在一个RDBM中可能具有与另一个不同的容量。在移植之前,您应该确保您非常了解目标数据库系统的数据类型定义。

最后的问题当然是让应用程序级别的SQL语句针对新系统工作。在我的工作中,这是迄今为止最困难的部分。日期数学似乎尤其是数据库特定的,而像引用规则这样的烦人事情是一个持续不断的刺激源。

祝您的项目顺利。