是否有 mysqldump 或类似工具的咒语可以生成一段 SQL2003 代码来在任意 SQL2003 兼容的 RDBMS 中创建和填充相同的数据库?
(我现在正在尝试的是 MonetDB)
最佳答案
DDL 语句本质上是特定于数据库供应商的。尽管它们具有相同的基本结构,但每个供应商对于如何定义类型、索引、约束等都有自己的看法。
另一方面,DML 语句相当可移植。因此我建议:
- 转储不带任何数据的数据库 (mysqldump --no-data) 以获取架构
- 进行必要的更改以将架构加载到其他数据库上 - 这些需要手动完成(但可能可以进行一些搜索/替换)
- 在关闭扩展插入且不创建表的情况下转储数据 (--extended-insert=0 --no-create-info)
- 针对其他数据库运行生成的脚本。
这应该可以满足您的要求。
但是,当将应用程序移植到不同的数据库供应商时,还需要许多其他东西;移动模式和数据是很容易的事情。检查引入的错误、不同的行为和性能测试是困难的部分。
至少测试应用程序中的每个查询在新数据库上的有效性。理想情况下可以做更多事情。
关于sql - 从 MySQL 迁移到任意符合标准的 SQL2003 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/85522/