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

  • 相关阅读:
    3. 算法分析
    4. union-find算法
    1.基础编程模型和数据抽象
    2. 背包,队列和栈
    .NET Core 单元测试
    ASP.NET Core Web API
    ASP.NET Core MVC 之区域(Area)
    ASP.NET Core MVC 之依赖注入 Controller
    ASP.NET Core MVC 之依赖注入 View
    微服务架构学习与思考(04):微服务技术体系
  • 原文地址:https://www.cnblogs.com/bocoimg/p/4583911.html
Copyright © 2011-2022 走看看