从Oracle迁移到PostgreSQL的感想
将数据从Oracle迁移到PostgreSQL。
随着Oracle许可证的变化,使用体验变得更加不便,时不时地会听到切换至PostgreSQL的讨论。在我们公司, 在迁移Delphi程序的同时,我们也有几个将数据库从Oracle迁移到PostgreSQL的案例。
移民的注意事项
在迁移过程中,需要修改SQL语句。
外部连接运算符(+)的更改以及对Oracle特定函数的支持。关于Oracle函数,常用的(我们公司的实践)函数nvl(),decode()可以通过使用PostgreSQL的function()来解决,但是有一个麻烦的地方是外部连接运算符。必须将其改写为OUTER JOIN。意外地麻烦。在一定程度上,还涉及到理解查询并进行重写的部分。需要相当的工作量。
C#的数据库迁移
最近,我接到了一个关于从Oracle迁移到PostgreSQL的C#的迁移项目的讨论,借用了源代码进行了调查。然而,我发现外连接运算符(+)的使用比我所预想的要多得多。虽然这个请求的程序与之前使用Delphi进行数据库迁移的程序相比,源代码量确实更多,但是这个情况还是太多了。
我暫時不知道原因,但繼續進行工作時,我突然意識到一點。
在 Delphi 中,外部連結操作符(+)取得的數據不包含在查詢中,而是在組件的LookUp字段中取得。
這就是減少外部連結操作符(+)的原因。
我一直認為在組件中使用LookUp字段很麻煩,但卻有意想不到的好處。
最后
请教训。
对于C#,不要积极推荐数据库迁移…
如果是Delphi,积极推荐从Oracle迁移到PostgreSQL。
除了C#和Delphi之外的其它语言,我们等待具体情况再进行考虑。
(本文只是一些随感,翻译有助于你更好的理解)