sql >> Database >  >> RDS >> PostgreSQL

Migreren van Postgres naar SQL Server 2008

Ik had problemen met het gebruik van de wizard Importeren in SQL Server 2008 R2 om tabellen uit PostgreSQL te importeren. Ik had het PostgreSQL ODBC-stuurprogramma geïnstalleerd, dus voor de gegevensbron in de wizard Importeren koos ik ".Net Framework Data Provider for Odbc" en gaf de DSN-naam voor mijn PostgreSQL-database op. De wizard vond de tabellen in orde, maar toen ik de import ging uitvoeren, kreeg ik de foutmelding

Kolominformatie voor de bron- en bestemmingsgegevens kon niet worden opgehaald.

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

– Kan kolom -1 niet vinden.

Ik vond de oplossing in de Microsoft-blogpost hier. Blijkbaar is het probleem dat verschillende ODBC-stuurprogramma's verschillende attribuutnamen gebruiken bij het rapporteren van kolommetagegevens. Om de import te laten werken, moest ik het bestand "ProviderDescriptors.xml" bewerken, dat zich op

bevond

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

In de ...

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

... element Ik moest de attributen wijzigen van ...

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

... naar ...

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

Dat wil zeggen, ik moest de MaximumLengthColumnName . aanpassen , NumericPrecisionColumnName , en NumericScaleColumnName waarden toekennen aan "LENGTH" , "PRECISION" , en "SCALE" , respectievelijk.

Nadat die wijziging was aangebracht, verliep het importeren van PostgreSQL naar SQL Server met succes.



  1. Hoe SQLite Trim() werkt

  2. Postgres-kolom bestaat niet

  3. Hoe kleine letters naar hoofdletters te converteren in MySQL

  4. Zijn dynamische mysql-query's met sql-escaping net zo veilig als voorbereide instructies?