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

Migration von Postgres zu SQL Server 2008

Ich hatte Probleme mit dem Importassistenten in SQL Server 2008 R2, um Tabellen aus PostgreSQL zu importieren. Ich hatte den PostgreSQL-ODBC-Treiber installiert, also habe ich für die Datenquelle im Import-Assistenten „.Net Framework Data Provider for Odbc“ ausgewählt und den DSN-Namen für meine PostgreSQL-Datenbank angegeben. Der Assistent fand die Tabellen in Ordnung, aber als ich den Import durchführte, bekam ich die Fehlermeldung

Spalteninformationen für die Quell- und Zieldaten konnten nicht abgerufen werden.

„Abrechnung“ -> [dbo].[Abrechnung]:

– Kann Spalte -1 nicht finden.

Ich habe die Lösung im Microsoft-Blogbeitrag hier gefunden. Anscheinend besteht das Problem darin, dass verschiedene ODBC-Treiber unterschiedliche Attributnamen verwenden, wenn sie Spaltenmetadaten melden. Damit der Import funktionierte, musste ich die Datei „ProviderDescriptors.xml“ bearbeiten, die sich unter

befand

C:\Programme\Microsoft SQL Server\100\DTS\ProviderDescriptors\ProviderDescriptors.xml

Im ...

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

... element Ich musste die Attribute von ... ändern

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

... bis ...

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

Das heißt, ich musste MaximumLengthColumnName anpassen , NumericPrecisionColumnName und NumericScaleColumnName Attributwerte zu "LENGTH" , "PRECISION" , und "SCALE" .

Nachdem diese Änderung vorgenommen wurde, lief der Import von PostgreSQL nach SQL Server erfolgreich.