是否有 mysqldump 或类似工具的咒语会产生一段 SQL2003 代码来在任意符合 SQL2003 的 RDBMS 中创建和填充相同的数据库?
(我现在正在尝试的是 MonetDB)
DDL 语句本质上是特定于数据库供应商的。尽管它们具有相同的基本结构,但每个供应商对如何定义类型、索引、约束等都有自己的看法。
另一方面,DML 语句是相当可移植的。因此我建议:
这应该做你想要的。
但是,当将应用程序移植到不同的数据库供应商时,还需要做许多其他事情;移动架构和数据很容易。检查引入的错误,不同的行为和性能测试是困难的。
至少测试应用程序中的每个查询在新数据库上的有效性。理想情况下做更多。
这个有点难。除非你有一个非常简单的带有普通类型(varchar、整数等)的数据库结构,否则你可能会在编写迁移工具时获得最好的结果。在像 Perl 这样的语言中(通过 DBI),这非常简单。该程序基本上是一个回显循环,它从一个数据库读取并插入另一个数据库。Google 知道有一些此类代码的示例。
除了移动数据的明显问题之外,还有一些数据类型如何表示的更微妙的问题。例如,MS SQL 的日期时间字段与 MySQL 的格式不同。其他数据类型(如 BLOB)在一个 RDBM 中的容量可能与另一种不同。您应该确保在移植之前非常了解目标数据库系统的数据类型定义。
当然,最后一个问题是让应用程序级别的 SQL 语句在新系统上运行。在我的工作中,这是迄今为止最困难的部分。日期数学似乎特别针对 DB,而诸如引用规则之类的烦人的事情一直是令人烦恼的根源。
祝你的项目好运。
在 SQL Server 2000 或 2005 中,您可以让它为您的对象生成脚本,但我不确定它们将如何传输到其他 RDBMS。
生成脚本选项可能是最简单的方法。不过,您无疑必须对一些数据类型进行一些搜索/替换。