2

我们正在考虑使用 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 来为我做这件事,但我想要一个简洁且易于维护的解决方案。

4

2 回答 2

0

为此,我已经成功地使用了渐变维度向导。它可能会为您提供您正在寻找的东西,尤其是使用向导

http://msdn.microsoft.com/en-us/library/ms141715.aspx

外部列不同步:SSIS 区分大小写 - 我多次遇到此问题,这让我想把头发拉出来。

无论哪种方式,这个简单的任务都需要一些工作。SSIS 绝不是企业级 ETL 产品,但它确实为您提供了一些快速和简单的功能,并且对于大多数 ETL 工作来说已经足够了。我想这也与您对它的舒适程度有关。

于 2009-10-14T19:49:20.843 回答
0

SCD 对于我想要的来说太慢了。我需要使用基于集合的 sql。

事实证明,我的很多问题都与提供程序中的错误有关。我打开了一个论坛主题(http://www.pgoledb.com/forum/viewtopic.php?f=4&t=49)并与版主/支持/开发人员进行了有用的讨论。

Postgres 也不允许你进行跨数据库查询,所以我用这种方式解决了这个问题:

  • 从生产数据库到临时存档数据库表的数据源
  • 在临时表和存档表之间运行基于集合的查询
  • 截断临时表

请注意,临时表并不是临时表,而是存档表模式的副本,用于临时存储数据。

花了一些时间,但我最终到达了那里。

无论哪种方式,这个简单的任务都需要一些工作。SSIS 绝不是企业级 ETL 产品,但它确实为您提供了一些快速和简单的功能,并且对于大多数 ETL 工作来说已经足够了。我想这也与您对它的舒适程度有关。

您会建议什么企业 ETL 解决方案?

于 2009-10-15T09:06:36.620 回答