У меня возникли проблемы с использованием мастера импорта в SQL Server 2008 R2 для импорта таблиц из PostgreSQL. У меня установлен драйвер ODBC PostgreSQL, поэтому для источника данных в мастере импорта я выбрал «поставщик данных .NET Framework для Odbc» и предоставил имя DSN для моей базы данных PostgreSQL. Мастер нашел таблицы в порядке, но когда я пошел выполнять импорт, я получил ошибку
Не удалось получить информацию о столбцах для исходных и целевых данных.
«Биллинг» -> [DBO] [Billing].
- Не удается найти столбец -1.
Я нашел решение в блоге Microsoft here. По-видимому, проблема в том, что различные драйверы 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 успешно выполнялся.
Выберете собственный клиент SQL Server из раскрывающегося списка DataSources. Я предполагаю, что Postgres нуждается в поставщике odbc, но я не знаю, как его реализовать. – reach4thelasers
Как вы подключаетесь к Postgres в настоящее время? У вас еще нет источника данных ODBC для настройки postgres? Да, тебе это нужно. – JohnB
Вопрос 1: Почему бы кому-нибудь это хотеть? Это не только экономическое самоубийство, но и техническое самоубийство. –