zoukankan      html  css  js  c++  java
  • Informix数据导入到oracle数据库的方法

    前言:

    不同类型的数据库互导数据,由于数据库机制不同,不能通过简单的复制粘贴实现,还有由于文件格式的不同,也不能简单的导出文件,导入数据库。

    关于informix导出数据,导入到oracle的方法,经过试验可以用如下方式:(虽然有点笨,但对于小批量需求,能行得通^_^)

    (曾经用过perl脚本实现,但由于调试perl环境及pl的依赖包有点麻烦,未能顺利调通,暂且将笨方法记录如下)

    1 informix中将数据导出成unl文件格式

    unload to "/informix/system_setup20150617.unl"    select * from  system_setup ;

    dbschema  -d nmosdb  -t tfa_alarm_relation –ss

    2 制作ctl控制文件circuit.ctl

    load data

    infile  'circuit20150610.unl'     --导出的unl文件

    into table circuit                     --导入的表名

    fields terminated by '|'            --分隔符           

    TRAILING NULLCOLS               --列出表中所有字段

    ( object_class char(10000),

    resourcesid char(10000),

    int_id char(10000),

    circuitno char(10000),

    ......

    bnodeport_rdn char(10000),

    localnode_rdn char(10000),

    romotenode_rdn char(10000) )

    3 配置sqlldr命令可以使用的环境变量

    用户环境变量:

    ORACLE_UNQNAME=oracle

    ORACLE_HOME=/opt/oracle/product/11g

    ORA_NLS10=/opt/oracle/product/11g/nls/data
    ORACLE_SID=orcl
    ORACLE_BASE=/opt/oracle

    PATH=/opt/oracle/product/11g/bin:/usr/sbin

    LD_LIBRARY_PATH=/opt/oracle/product/11g/lib:/lib:/usr/lib

    oracle客户端配置:

    tnsnames.ora

    ORCL =   (DESCRIPTION =     (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.9)(PORT = 1521))     (CONNECT_DATA =       (SERVER = DEDICATED)       (SERVICE_NAME = orcl)     )   )

    SID_LIST_LISTENER =   (SID_LIST =     (SID_DESC =       (GLOBAL_DBNAME = orcl)              (ORACLE_HOME = /opt/app/oracle/product/11.2.0/db_1)               (SID_NAME = orcl)     )   )

    listener.ora

    LISTENER =   (DESCRIPTION_LIST =     (DESCRIPTION =       (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))       (ADDRESS = (PROTOCOL = TCP)(HOST = 10.10.0.9)(PORT = 1521))     )   )

    SID_LIST_LISTENER =

      (SID_LIST =

        (SID_DESC =

          (SID_NAME = PLSExtProc)

          (ORACLE_HOME = /opt/oracle/product/11g)

          (PROGRAM = extproc)

          (ENVS="EXTPROC_DLLS=ANY")

        )

        (SID_DESC =

          (GLOBAL_DBNAME = orcl)

          (ORACLE_HOME = /opt/oracle/product/11g)

          (SID_NAME = orcl)

        )

      )

    sqlldr 数据库用户名/密码@实例名  测试是否通

    4 执行命令,导入文件

    sqlldr userid=nrmdb/nrmoptr@orcl control= /opt/informix/data/circuit.ctl

    data= /opt/informix/data/circuit20150610.unl

     附加:

    informix的日期字段导入到oracle中,由于不是相同的类型,不能直接导入

    通过一个字段 做了个中转。

    例如informix日期字段为time_stamp;

    在oracle中 创建一个time_stamp1 varchar(255)用于接收 informix的日期字段;

    同时在oracle中创建一个time_stamp date 用于oracle中将日期字段从 varchar转换为date

    update circuit set time_stamp=to_date(time_stamp1,'yyyy-mm-dd hh24:mi:ss')

    将过度字段time_stamp1删除。

    类型转换完成。

    结语:

    DBA匮乏的年代,能把实践落地的人更加的匮乏... 多做些动手实践,再去讨论什么方案可行,更有说服力

    因为,只有在实践的过程中,才能遇到形形色色的问题,需要去一个个攻克它~~~

    加油吧~~~trouble shooter^_^

    --by Joyce

  • 相关阅读:
    开源项目
    [Accessibility] Missing contentDescription attribute on image [可取行]失踪contentDescription属性图像
    Android 布局 中实现适应屏幕大小及组件滚动
    EF 错误记录
    EasyUI 加载时需要显示和隐藏 panel(面板)内容破版问题
    IE 报表缩放后页面破版
    VS 2017 引入nuget 问题
    SSRS 报表显示页面 asp net session丢失或者找不到 asp net session has expired or could not be found()
    log4net 配置
    网站
  • 原文地址:https://www.cnblogs.com/bocoimg/p/4583911.html
Copyright © 2011-2022 走看看