我们正在考虑使用 SSIS 来维护 PostgreSql 数据仓库。我以前在 SQL Server 之间使用过它,没有任何问题,但是很难让它与 Postgres 很好地配合使用。我正在使用 OLEDB PGNP 数据提供程序 ( http://www.postgresql.org/about/news.1004 ) 的评估版。
我想从事实表上的 UPSERT 之类的简单操作开始(每天更新/插入 10k-15k 行),但事实证明这非常困难(更不用说我将来想使用代理键)。
我尝试过(http://blogs.msdn.com/b/mattm/archive/2008/11/22/lookup-pattern-upsert.aspx)和(http://consultingblogs.emc.com/jamiethomson/archive /2006/09/12/SSIS_3A00_-Checking-if-a-row-exists-and-if-it-does_2C00_-has-it-changed.aspx)实际上是相同的(除了我不太了解工会最后,当我尝试 upsert 时)但是在使用 OLEDb 命令进行更新时,我遇到了同样的参数问题——我试图使用(http://technet.microsoft.com/en-us )来克服这个问题/library/ms141773.aspx)但这似乎不起作用,我收到一个验证错误 -
complent.... 的外部列与数据源列不同步... 需要从外部列中删除外部列“Param_2”。(前两个参数也会出现此错误——使用 sql 连接从未遇到过此错误,因为它支持命名参数)
有没有人遇到过这个?
和:
这个简单的任务在 SSIS 中显然很难完成这一事实表明我使用了错误的工具来完成这项工作 - 有没有更好(并且仍然灵活)的方法来做到这一点?或者另一个 ETL 包是否更适合在两个 Postgres 数据库之间使用?- 其他选项包括 ( http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks ) 上列出的任何选项。我可以去写一大堆 SQL 来为我做这件事,但我想要一个简洁且易于维护的解决方案。