PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Migração de banco de dados do Postgres para MS SQL Servr


Os metadados retornados pelo driver ODBC do PostgreSQL não são mapeados corretamente pelo arquivo SSMS ProviderDescriptors.xml. Este arquivo está localizado no diretório "C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\ProviderDescriptors" na minha instalação do SSMS.

Usando informações obtidas esta pergunta e postagem do blog do MS , consegui importar com sucesso do PostgreSQL com o System.Data.Odbc.OdbcConnection ProviderDescriptor seção de configuração abaixo. Alterei o MaximumLengthColumnName , NumericPrecisionColumnName e NumericScaleColumnName valores de atributo no System.Data.Odbc.OdbcConnection ColumnSchemaAttributes para corresponder aos nomes reais retornados pelo driver ODBC do PosgreSQL (LENGTH e 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>

Você pode querer salvar o ProviderDescriptors.xml original arquivo e reverta para ele assim que suas tarefas de importação forem concluídas.