SSIS を使用して PostgreSql データ ウェアハウスを維持することを検討しています。以前は問題なく SQL Server 間で使用していましたが、Postgres でうまく動作させるのは非常に困難です。OLEDB PGNP データ プロバイダー ( http://www.postgresql.org/about/news.1004 ) の評価版を使用しています。
ファクト テーブルの UPSERT のような単純なものから始めたかったのですが (1 万から 1 万 5 千行が毎日更新/挿入されます)、これは非常に難しいことがわかりました (言うまでもなく、将来的には代理キーを使用したいと思います)。
私は(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 ) これらは事実上同じです (ユニオンを本当に理解していないことを除いて)アップサートしようとしているときに最後にすべて)しかし、OLEDb コマンドを使用して更新を行うときに、パラメーターで同じ問題に遭遇します。 /library/ms141773.aspx ) しかし、それはうまくいかないようです。検証エラーが発生します –
complent の外部列.... データソース列と同期していません... 外部列「Param_2」を外部列から削除する必要があります。(このエラーは最初の 2 つのパラメーターでも繰り返されます。名前付きパラメーターをサポートしているため、SQL 接続を使用してこれに遭遇したことはありません)
誰かがこれに出くわしましたか?
と:
この単純なタスクを SSIS で行うのは明らかに非常に難しいという事実は、私がその仕事に間違ったツールを使用していることを示唆しています。これを行うためのより良い (そしてまだ柔軟な) 方法はありますか? それとも、2 つの Postgres データベース間で使用するのに別の ETL パッケージの方が適していますか? -その他のオプションには、( http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks ) にリストされているものが含まれます。これを実行するために大量の SQL を作成することもできますが、きちんとした簡単に保守できるソリューションが必要でした。