PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Migration de Postgres vers SQL Server 2008

J'avais des problèmes lors de l'utilisation de l'assistant d'importation dans SQL Server 2008 R2 pour importer des tables à partir de PostgreSQL. J'avais installé le pilote ODBC PostgreSQL, donc pour la source de données dans l'assistant d'importation, j'ai choisi "fournisseur de données .Net Framework pour Odbc" et fourni le nom DSN pour ma base de données PostgreSQL. L'assistant a trouvé les tables correctes, mais lorsque je suis allé effectuer l'importation, j'ai eu l'erreur

Les informations de colonne pour les données source et de destination n'ont pas pu être récupérées.

"Facturation" -> [dbo].[Facturation] :

– Impossible de trouver la colonne -1.

J'ai trouvé la solution dans le billet de blog Microsoft ici. Apparemment, le problème est que divers pilotes ODBC utilisent des noms d'attributs différents lors de la création de rapports sur les métadonnées des colonnes. Pour que l'importation fonctionne, j'ai dû modifier le fichier "ProviderDescriptors.xml", qui se trouvait à

C:\Program Files\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml

Dans le ...

<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">

... élément dont j'ai dû changer les attributs de ...

<dtm:ColumnSchemaAttributes
    NameColumnName = "COLUMN_NAME"
    OrdinalPositionColumnName="ORDINAL_POSITION"
    DataTypeColumnName = "TYPE_NAME"
    MaximumLengthColumnName = "COLUMN_SIZE"
    NumericPrecisionColumnName = "COLUMN_SIZE"
    NumericScaleColumnName = "DECIMAL_DIGITS"
    NullableColumnName="NULLABLE"
    NumberOfColumnRestrictions="4"
/>

... à ...

<dtm:ColumnSchemaAttributes
    NameColumnName = "COLUMN_NAME"
    OrdinalPositionColumnName="ORDINAL_POSITION"
    DataTypeColumnName = "TYPE_NAME"
    MaximumLengthColumnName = "LENGTH"
    NumericPrecisionColumnName = "PRECISION"
    NumericScaleColumnName = "SCALE"
    NullableColumnName="NULLABLE"
    NumberOfColumnRestrictions="4"
/>

Autrement dit, j'ai dû modifier le MaximumLengthColumnName , NumericPrecisionColumnName , et NumericScaleColumnName valeurs d'attribut à "LENGTH" , "PRECISION" , et "SCALE" , respectivement.

Une fois cette modification effectuée, l'importation de PostgreSQL vers SQL Server s'est déroulée avec succès.