PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Migration der Datenbank von Postgres zu MS SQL Servr

Die vom PostgreSQL-ODBC-Treiber zurückgegebenen Metadaten werden von der SSMS-Datei „ProviderDescriptors.xml“ nicht korrekt zugeordnet. Diese Datei befindet sich in meiner SSMS-Installation im Verzeichnis „C:\Programme (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Microsoft\SSIS\150\ProviderDescriptors“.

Verwenden von Informationen aus dieser Frage und MS-Blogpost , konnte ich mit System.Data.Odbc.OdbcConnection erfolgreich aus PostgreSQL importieren ProviderDescriptor Konfigurationsabschnitt unten. Ich habe den MaximumLengthColumnName geändert , NumericPrecisionColumnName und NumericScaleColumnName Attributwerte in System.Data.Odbc.OdbcConnection ColumnSchemaAttributes um mit den tatsächlichen Namen abzugleichen, die vom PosgreSQL-ODBC-Treiber zurückgegeben werden (LENGTH , und 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>

Möglicherweise möchten Sie die ursprüngliche ProviderDescriptors.xml speichern Datei und kehren Sie zu ihr zurück, sobald Ihre Importaufgaben abgeschlossen sind.