martes, 24 de agosto de 2010

Importar datos a una tabla Oracle desde un SQL Server (problemas con decimales)

Para esto Oracle ha creado una cosa llamada Heterogeneous Services, es una "aplicación" que conecta utilizando un ODBC y un database link bases de datos NO Oracle con tu DB Oracle.

Esto es muy útil cuando tienes que migrar algunos datos a un Oracle o ejecutar un proceso que lleve cada cierto tiempo datos a tu Oracle. Yo lo utilizo para llevar datos a un DWH que tengo en un Oracle 11g.

Uno problema muy preocupante llego cuando me dí cuenta que los datos de tipo numéricos reales (con decimales) en Oracle entraban como enteros. Me estaba truncando los decimales y esto no era muy agradable porque después los resultados eran distintos desde Oracle frente a los devueltos desde SQL Server.

Al final conseguí solucionarlo con una configuración muy rápida en el fichero de configuración del HS. Simplemente añadiendo la etiqueta:
C:\app\Administrador\product\11.1.0\db_1\hs\admin\initgd4odbc.ora
HS_LANGUAGE=AMERICAN_AMERICA.WE8MSWIN1252


Al parecer Oracle estaba interpretando el "." de los millares como la "," de los decimales. La poner HS_LANGUAGE=AMERICAN_AMERICA.WE8MSWIN1252 lo interpreta correctamente.