Мы рассматриваем возможность использования 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)), которые фактически одинаковы (за исключением того, что я не совсем понимаю союз в конце, когда пытаюсь отстоять) Но Я сталкиваюсь с той же проблемой с параметрами при обновлении с помощью команды OLEDb - которую я пытался преодолеть с помощью (http://technet.microsoft.com/en-us/library/ms141773.aspx), но, похоже, это не работает, я получаю ошибку проверки -
Внешние столбцы для compnt .... не синхронизированы со столбцами источника данных ... внешний столбец «Param_2» необходимо удалить из внешних столбцов.
(эта ошибка повторяется и для первых двух параметров - никогда не сталкивался с этим при использовании соединения sql, поскольку он поддерживает именованные параметры)
Кто-нибудь сталкивался с этим?
И
Тот факт, что эту простую задачу, по-видимому, так трудно выполнить в SSIS, говорит о том, что я использую не тот инструмент для этой работы - есть ли лучший (и все же гибкий) способ сделать это? Или другой пакет ETL лучше использовать между двумя базами данных Postgres? -Другие опции включают в себя любой из перечисленных в (http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks). Я мог бы просто написать и написать нагрузку SQL, чтобы сделать это для меня, но я хотел аккуратное и легко обслуживаемое решение.