La migration de Postgres SQL Server 2008
J'ai besoin de migrer une base de données Postgres 7 pour SQL Server 2008. Je suis familier avec l'assistant Importation et Exportation SSIS, mais je suis perplexe sur la façon de définir la source de données ou définir le fournisseur de données.
Quelle est la meilleure façon de migrer Postgres SQL Server, et comment puis-je définir les sources de données/drivers pour postgres?
Vous choisissez SQL Server Native Client à partir des Sources de données déroulante. Je devine que Postgres besoins le fournisseur odbc mais je ne sais pas comment la mettre en œuvre
Comment vous connecter à Postgres actuellement? Vous n'avez pas de source de données ODBC pour postgres encore mis en place? Ouais, vous avez besoin que.
Question 1: Pourquoi quelqu'un voudrait le faire ? Le faire n'est pas seulement économique suicide, c'est de la technique de suicide.
Comment vous connecter à Postgres actuellement? Vous n'avez pas de source de données ODBC pour postgres encore mis en place? Ouais, vous avez besoin que.
Question 1: Pourquoi quelqu'un voudrait le faire ? Le faire n'est pas seulement économique suicide, c'est de la technique de suicide.
OriginalL'auteur reach4thelasers | 2010-09-14
Vous devez vous connecter pour publier un commentaire.
Je vous souhaite la meilleure des chances dans la tentative d'importation de PostgreSQL dans SQL Server en utilisant l'Assistant Importation et Exportation. Cependant, j'ai lu de nombreux messages du conseil de discussions avec des gens qui ont du mal à la faire fonctionner. Par exemple:
Ici est le plus utile thread que j'ai trouvé sur le sujet:
Pour aider quelqu'un qui pourrait être d'essayer d'atteindre le même objectif que le mien. Au lieu de sélectionner le “PostgreSQL Fournisseur OLE DB” dans la source de données menu déroulant de SQL Server Assistant Importation et Exportation, sélectionnez “.Cadre Net Data Provider for Odbc”
, Alors vous devez faire une source de données et de fournir un ConnectionString. Suivant ConnectionString a fonctionné pour moi
Driver={PostgreSQL};Server=localhost;Port=5432;Database=TestMasterMap;Uid=postgres;Pwd=;
Pour en faire une source de données, vous devez aller dans des Toolsà Sources de Données (ODBC) et de créer un DSN utilisateur. Une fois cela fait, vous pouvez fournir le nom DSN la DSN zone de texte de SQL Server Assistant Importation et Exportation.
Un intervenant a affirmé qu'il a fonctionné, mais qu'il a eu "de la mémoire lors de la lecture de tuples" erreurs sur les grosses tables. Donc, pour les tables avec plus de 3 millions de lignes, il a dû briser l'importation jusqu'à 3 millions de lignes morceaux.
Aussi, il y a un lien vers la maternelle .NET fournisseur pour PostgreSQL dans ce thread.
Personnellement, si c'est quelque chose que je n'avais qu'à le faire une fois, et si j'ai bien compris le schéma et les données assez bien, je voudrais essayer:
Il pourrait vous prendre moins de temps pour faire le dessus de déconner avec SSIS Assistant d'Importation/Exportation et PostgreSQL pour les jours (mais ce serait bien si ces outils travaillé!)
J'aime l'idée d'exporter les données au format CSV. Travailler avec SSIS directement n'a pas bien fonctionné pour moi, surtout parce que les données que je voulais à l'exportation a été organisée dans les points de vue, le pilote odbc (ou SSIS lui-même) ne semble pas ramasser.
OriginalL'auteur JohnB
J'ai eu des problèmes à l'aide de l'Assistant d'Importation dans SQL Server 2008 R2 pour importer des tables de PostgreSQL. J'ai eu l'PostgreSQL, ODBC driver installé, donc pour la Source de Données dans l'Assistant d'Importation, j'ai choisi ".Cadre Net Data Provider for Odbc" et a fourni le nom du DSN pour ma base de données PostgreSQL. L'assistant a trouvé les tables d'accord, mais quand je suis allé pour effectuer l'importation j'ai obtenu l'erreur
J'ai trouvé la solution sur le Microsoft blog ici. Apparemment, le problème est que les différents pilotes ODBC utiliser différents noms d'attribut lors de la déclaration de la colonne de métadonnées. Pour obtenir à l'importation pour le travail, j'ai dû modifier l' "ProviderDescriptors.xml" fichier, qui a été situé à
C:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml
Dans le ...
... élément, j'ai dû changer les attributs de ...
... ...
Qui est, je l'ai eu à retoucher le
MaximumLengthColumnName
,NumericPrecisionColumnName
, etNumericScaleColumnName
valeurs d'attribut à"LENGTH"
,"PRECISION"
, et"SCALE"
, respectivement.Une fois que le changement a été fait de l'importation à partir de PostgreSQL SQL Server exécuté avec succès.
J'ai eu le même problème. L'ProviderDescriptors.xml réside dans les deux sous Program Files et Program Files(x86). Généralement SQL Management Studio est 32 bits, et exécute l'assistant DTS qu'en 32bit. Donc modifier le fichier dans le (x86) de l'arbre. Seulement réussi à le faire fonctionner sous 32bit programme d'Importation/exportation. 64bit Importation/Exportation n'a jamais fonctionner correctement, même après la modification du fichier dans l'autre emplacement.
Mise à jour: 64 bits ne fonctionne également, mais n'en faites pas une "copie" du fichier dans le même répertoire. tous les fichiers (même si n'a pas de nom *.xml) sont chargés et peuvent annuler vos modifications.
OriginalL'auteur Gord Thompson
Que j'ai fini de commenter la réponse ci-dessus, j'ai pensé à essayer de SQL WorkbenchJ; il a un datapump fonctionnalité qui a fonctionné assez bien pour moi. J'ai réussi à exporter les données de ma base de données PostgreSQL à une instance de SQL server.
Ceux qui voudrais ce en mode batch (par shell), voici comment faire: Google Groupes Thread. Le WbCopy commande mentionnée sur la discussion n'est pas vraiment documenté partout où j'ai pu trouver, mais vous pouvez en générer un à travers le datapump interface, puis de modifier ce que vous avez besoin.
OriginalL'auteur Andre