Nous envisageons d'utiliser SSIS pour gérer un entrepôt de données PostgreSQL. Je l'ai utilisé auparavant entre les serveurs SQL sans problème, mais j'ai beaucoup de mal à le faire fonctionner correctement avec Postgres. J'utilise la version d'évaluation du fournisseur de données OLEDB PGNP (http://www.postgresql.org/about/news.1004). Je voulais commencer par quelque chose de simple comme UPSERT sur la table des faits (10k-15k lignes sont mises à jour/insérées tous les jours), mais cela s'avère très difficile (sans parler du fait que je vais utiliser des clés de substitution à l'avenir).Data Warehousing Postgres
J'ai essayé (http://blogs.msdn.com/b/mattm/archive/2008/11/22/lookup-pattern-upsert.aspx) et (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) qui sont effectivement les mêmes (sauf que je ne comprends pas vraiment l'union tout à la fin quand je suis en train d'augmenter) Mais je rencontre le même problème avec paramètres lors de la mise à jour en utilisant une commande OLEDb - que j'ai essayé de surmonter en utilisant (http://technet.microsoft.com/en-us/library/ms141773.aspx) mais cela ne semble pas fonctionner, je reçois une erreur de validation -
Les colonnes externes pour complent .... sont hors de synchronisation avec les colonnes de source de données ... la colonne externe "Param_2" doit être supprimée des colonnes externes. (cette erreur est répétée pour les deux premiers paramètres également - jamais rencontré cela en utilisant la connexion sql car il prend en charge les paramètres nommés)
Quelqu'un at-il rencontré cela?
ET:
Le fait que cette tâche simple est apparemment si difficile à faire dans SSIS Je suggère d'utiliser le mauvais outil pour le travail - moyen est-il une meilleure (et encore souple) de le faire? Ou un autre package ETL serait-il préférable de l'utiliser entre deux bases de données Postgres? -Les autres options incluent toutes celles listées sur (http://en.wikipedia.org/wiki/Extract,_transform,_load#Open-source_ETL_frameworks). Je pourrais juste aller écrire une charge de SQL pour le faire pour moi, mais je voulais une solution nette et facilement maintenable.
Je me rends compte que postgres a une option except et intersection. Mais je ne veux que mettre à jour les lignes qui ont changé et insérer des lignes qui n'existent pas –