PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Migrazione da Postgres a SQL Server 2008

Stavo riscontrando problemi con l'Importazione guidata in SQL Server 2008 R2 per importare tabelle da PostgreSQL. Avevo installato il driver ODBC PostgreSQL, quindi per l'origine dati nell'Importazione guidata ho scelto ".Net Framework Data Provider for Odbc" e ho fornito il nome DSN per il mio database PostgreSQL. La procedura guidata ha trovato le tabelle a posto, ma quando sono andato a eseguire l'importazione ho ricevuto l'errore

Impossibile recuperare le informazioni sulla colonna per i dati di origine e destinazione.

“Fatturazione” -> [dbo].[Fatturazione]:

– Impossibile trovare la colonna -1.

Ho trovato la soluzione nel post del blog Microsoft qui. Apparentemente il problema è che vari driver ODBC utilizzano nomi di attributi diversi quando segnalano i metadati delle colonne. Per far funzionare l'importazione ho dovuto modificare il file "ProviderDescriptors.xml", che si trovava in

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

Nel ...

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

... elemento ho dovuto cambiare gli attributi da ...

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

... a ...

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

Cioè, ho dovuto modificare MaximumLengthColumnName , NumericPrecisionColumnName e NumericScaleColumnName attribuire i valori a "LENGTH" , "PRECISION" e "SCALE" , rispettivamente.

Una volta apportata la modifica, l'importazione da PostgreSQL a SQL Server è stata eseguita correttamente.