PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Мигриране от Postgres към SQL Server 2008

Имах проблеми с използването на съветника за импортиране в SQL Server 2008 R2 за импортиране на таблици от PostgreSQL. Имах инсталиран PostgreSQL ODBC драйвер, така че за източника на данни в съветника за импортиране избрах ".Net Framework Data Provider for Odbc" и предоставих DSN името за моята PostgreSQL база данни. Помощникът откри, че таблиците са наред, но когато отидох да извърша импортирането, получих грешката

Информацията в колоната за данните за източник и местоназначение не можа да бъде извлечена.

„Таксуване“ -> [dbo].[Таксуване]:

– Не може да се намери колона -1.

Намерих решението в публикацията в блога на Microsoft тук. Очевидно проблемът е, че различните ODBC драйвери използват различни имена на атрибути, когато отчитат метаданни на колони. За да накарам импортирането да работи, трябваше да редактирам файла "ProviderDescriptors.xml", който се намираше на

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

В ...

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

... елемент Трябваше да променя атрибутите от ...

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

... до ...

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

Тоест, трябваше да настроя MaximumLengthColumnName , NumericPrecisionColumnName и NumericScaleColumnName стойности на атрибути към "LENGTH" , "PRECISION" и "SCALE" , съответно.

След като тази промяна е направена, импортирането от PostgreSQL към SQL Server се изпълнява успешно.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Пролетни конференции на PostgreSQL на 2011 г., САЩ/Канада

  2. Как да преместя съществуващото си приложение за релси в heroku? (sqlite към postgres)

  3. Как да променя схемата на множество PostgreSQL таблици в една операция?

  4. Име на таблица като параметър на функцията на PostgreSQL

  5. PostgreSQL - задайте стойност на клетка по подразбиране според стойност на друга клетка