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