sql >> Databáze >  >> RDS >> PostgreSQL

Migrace z Postgres na SQL Server 2008

Měl jsem problémy s použitím Průvodce importem v SQL Server 2008 R2 k importu tabulek z PostgreSQL. Měl jsem nainstalovaný ovladač PostgreSQL ODBC, takže pro zdroj dat v Průvodci importem jsem zvolil ".Net Framework Data Provider for Odbc" a dodal DSN název pro moji databázi PostgreSQL. Průvodce zjistil, že jsou tabulky v pořádku, ale když jsem šel provést import, zobrazila se chyba

Informace o sloupcích pro zdrojová a cílová data nelze načíst.

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

– Nelze najít sloupec -1.

Řešení jsem našel v příspěvku na blogu společnosti Microsoft zde. Problém je zřejmě v tom, že různé ovladače ODBC používají při vykazování metadat sloupců různé názvy atributů. Aby import fungoval, musel jsem upravit soubor "ProviderDescriptors.xml", který byl umístěn na

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

V ...

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

... element Musel jsem změnit atributy z ...

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

... do ...

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

To znamená, že jsem musel upravit MaximumLengthColumnName , NumericPrecisionColumnName a NumericScaleColumnName hodnoty atributu do "LENGTH" , "PRECISION" a "SCALE" , respektive.

Jakmile byla tato změna provedena, import z PostgreSQL na SQL Server proběhl úspěšně.



  1. Funkce řetězce MySQL (úplný seznam)

  2. Aktualizujte data v databázi MySQL

  3. Na Duplicate Key Update to samé jako vložení

  4. Možnosti cloudového zálohování pro databáze MySQL a MariaDB