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

Migrering fra Postgres til SQL Server 2008

Jeg havde problemer med at bruge Import Wizard i SQL Server 2008 R2 til at importere tabeller fra PostgreSQL. Jeg havde PostgreSQL ODBC-driveren installeret, så for datakilden i Import Wizard valgte jeg ".Net Framework Data Provider for Odbc" og angav DSN-navnet til min PostgreSQL-database. Guiden fandt tabellerne i orden, men da jeg gik for at udføre importen, fik jeg fejlen

Kolonneoplysninger for kilde- og destinationsdataene kunne ikke hentes.

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

– Kan ikke finde kolonne -1.

Jeg fandt løsningen i Microsofts blogindlæg her. Tilsyneladende er problemet, at forskellige ODBC-drivere bruger forskellige attributnavne, når de rapporterer kolonnemetadata. For at få importen til at fungere var jeg nødt til at redigere filen "ProviderDescriptors.xml", som var placeret på

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

I ...

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

... element Jeg var nødt til at ændre attributterne fra ...

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

... til ...

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

Det vil sige, jeg var nødt til at justere MaximumLengthColumnName , NumericPrecisionColumnName , og NumericScaleColumnName attribut værdier til "LENGTH" , "PRECISION" og "SCALE" hhv.

Da denne ændring var foretaget, kørte importen fra PostgreSQL til SQL Server med succes.



  1. Skal jeg bruge NOT IN, OUTER APPLY, LEFT OUTER JOIN, UNDTAGET eller IKKE FINDER?

  2. SQL fuld tilslutning

  3. ECONNREFUSED for Postgres på nodeJS med dockers

  4. DBMS_SCHEDULER Job Kør hver time Eksempel