Estaba teniendo problemas al usar el Asistente de importación en SQL Server 2008 R2 para importar tablas desde PostgreSQL. Tenía instalado el controlador PostgreSQL ODBC, por lo que para el origen de datos en el Asistente de importación elegí ".Net Framework Data Provider para Odbc" y proporcioné el nombre de DSN para mi base de datos PostgreSQL. El asistente encontró las tablas bien, pero cuando fui a realizar la importación obtuve el error
No se pudo recuperar la información de columna para los datos de origen y destino.
“Facturación” -> [dbo] [Facturación]:.
- No se puede encontrar la columna -1.
Encontré la solución en la publicación de blog de Microsoft here. Aparentemente, el problema es que varios controladores ODBC usan diferentes nombres de atributos cuando informan los metadatos de las columnas. Para obtener la importación trabajar tuve que editar el archivo "ProviderDescriptors.xml", que se encuentra en
C: \ Archivos de programa \ Microsoft SQL Server \ 100 \ DTS \ ProviderDescriptors \ ProviderDescriptors.xml
En la ...
<dtm:ProviderDescriptor SourceType="System.Data.Odbc.OdbcConnection">
... elemento que tenía que cambiar los atributos de ...
<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"
/>
Es decir, que tuvieron que ajustar los MaximumLengthColumnName
, NumericPrecisionColumnName
y NumericScaleColumnName
valores de atributos a "LENGTH"
, "PRECISION"
y "SCALE"
, respectivamente.
Una vez hecho ese cambio, la importación de PostgreSQL a SQL Server se ejecutó correctamente.
Elegiría SQL Server Native Client del menú desplegable DataSources. Supongo que Postgres necesita el proveedor odbc pero no sé cómo implementarlo – reach4thelasers
¿Cómo te estás conectando a Postgres actualmente? Aún no tiene una fuente de datos ODBC para la configuración de Postgres. Sí, lo necesitas. – JohnB
Pregunta 1: ¿Por qué alguien querría hacer esto? Hacer eso no es solo un suicidio económico, es un suicidio técnico también. –