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

Migration de la base de données de Postgres vers MS SQL Servr

Les métadonnées renvoyées par le pilote ODBC PostgreSQL ne sont pas mappées correctement par le fichier SSMS ProviderDescriptors.xml. Ce fichier se trouve dans le répertoire "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\ProviderDescriptors" sur mon installation SSMS.

Utilisation des informations recueillies à partir de cette question et Article de blog MS , j'ai réussi à importer depuis PostgreSQL avec le System.Data.Odbc.OdbcConnection ProviderDescriptor section de configuration ci-dessous. J'ai changé le MaximumLengthColumnName , NumericPrecisionColumnName , et NumericScaleColumnName valeurs d'attribut dans System.Data.Odbc.OdbcConnection ColumnSchemaAttributes pour correspondre aux noms réels renvoyés par le pilote ODBC PosgreSQL (LENGTH , et PRECISION , SCALE ).

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

    <dtm:SchemaNames
        TablesSchemaName="Tables"
        ColumnsSchemaName="Columns" 
        ViewsSchemaName="Views" 
    />

    <dtm:TableSchemaAttributes
        TableCatalogColumnName="TABLE_CAT"
        TableSchemaColumnName="TABLE_SCHEM"
        TableNameColumnName="TABLE_NAME"
        TableTypeColumnName="TABLE_TYPE"
        TableDescriptor="TABLE"
        ViewDescriptor="VIEW"
        SynonymDescriptor ="SYNONYM"
        NumberOfTableRestrictions="3"
    />

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

    <dtm:Literals
        PrefixQualifier="&quot;"
        SuffixQualifier="&quot;"
        CatalogSeparator="."
        SchemaSeparator="."
    />
</dtm:ProviderDescriptor>

Vous pouvez enregistrer le fichier ProviderDescriptors.xml d'origine fichier et revenez-y une fois vos tâches d'importation terminées.