informix数据同步到mysql_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

c231744892f950d934236f6e0e325c13.png

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Informix数据库数据迁移到Oracle数据库,可以按照以下步骤进行操作: 1. 在Oracle数据库中创建相同的表结构:使用CREATE TABLE语句在Oracle数据库中创建与Informix数据库中相同的表结构,确保两个表的字段、数据类型和长度等相同。 2. 在Informix数据库中导出数据:使用UNLOAD命令将Informix数据库中的表数据导出到一个文本文件中。例如,以下命令将table1表的所有数据导出到table1.txt文件中: ``` unload to table1.txt select * from table1; ``` 3. 将数据文件从Informix服务器复制到Oracle服务器:使用scp或sftp等命令将数据文件从Informix服务器复制到Oracle服务器。 4. 在Oracle数据库导入数据:使用SQL*Loader(SQLLDR)实用程序将数据文件中的数据加载到Oracle数据库中。例如,以下命令将table1.txt文件中的数据加载到table1表中: ``` sqlldr username/password control=load_table1.ctl ``` 在load_table1.ctl文件中指定了数据文件的路径和格式,例如: ``` load data infile '/path/to/table1.txt' into table table1 fields terminated by ',' optionally enclosed by '"' (tran_id, col1, col2, col3, ...) ``` 其中,tran_id是Informix表中的主键或唯一键,需要在Oracle表中进行匹配和插入操作。根据实际情况,您可能需要调整数据文件和控制文件中的格式和字段。 请注意,这只是一个概述,具体操作步骤可能因为版本、环境等原因有所不同。在进行数据迁移前,请务必详细阅读官方文档并进行测试,以确保迁移过程正确无误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_39897505

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值