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/[email protected] 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^_^

时间: 2024-12-22 03:13:44

Informix数据导入到oracle数据库的方法的相关文章

EXCEL表数据导入到ORACLE数据库中

将EXCEL表导入ORACLE数据库中 一.建立表 1.建立表 2.查询表 select * from yy; 二.导入程序 在excel中找到需要导入的数据 2.将excel中的数据另存为文本文件(有制表符分割的) 3.在pl*sql中选择tools-->text importer,在出现的窗口中选择"Data from Textfile",然后再选择"Open data file", 在弹出的文件选择框中选中保存有数据的文本文件,此时将会看到data fr

PL/SQLDeveloper导入导出Oracle数据库方法

前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据库用于导入导出数据库的主要工具之一,本文主要介绍利用PL/SQL导入导出Oracle数据库的过程. 1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构). 1.2 Tools→Expor

PL/SQL Developer导入导出Oracle数据库方法

前一篇博客介绍了Navicat工具备份Oracle的方法,这篇博客介绍一下使用PL/SQL Developer工具导入导出Oracle数据库的方法. PL/SQL Developer是Oracle数据库用于导入导出数据库的主要工具之一,本文主要介绍利用PL/SQL导入导出Oracle数据库的过程. 1.Oracle数据库导出步骤 1.1 Tools→Export User Objects...选项,导出.sql文件. 说明:此步骤导出的是建表语句(包括存储结构). 1.2 Tools→Expor

Excel表数据导入Sql Server数据库中

Excel表数据导入Sql Server数据库的方法很多,这里只是介绍了其中一种: 1.首先,我们要先在test数据库中新建一个my_test表,该表具有三个字段tid int类型, tname nvarchar类型, tt nvarchar类型(注意:my_test表中的数据类型必须与Excel中相应字段的类型一致) 2. 我们用SELECT * FROM  OPENROWSET( 'Microsoft.Jet.OLEDB.4.0 ', 'Excel  5.0;DatabASE=[Excel表

sqlserver数据导入到oracle中

原来的网站数据存储在sqlserver中,梳理好数据表的字段关系,需要导入到oracle数据库中.网上提供了若干解决方法.其中一个是在服务器有sqlserver和oracle的情况下直接进行导出工作.这个操作我尝试了,没有成功.之前的时候access可以导入到oracle中,然后就考虑把sqlserver的数据导入到access中.实际的操作是: 1.sqlserver到excel: 直接打开一个excel 2.excel到access access外部数据---〉excel,选择对应的exce

Java代码实现excel数据导入到Oracle

1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码   import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.Bi

极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间. 本实验中所用到工具为VS2008和SQL SERVER 2000.SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器.感兴趣的朋友可以下载源代码自己验证一下所用时间

从服务器将Oracle数据库导出到本地Oracle数据库的方法

原文:从服务器将Oracle数据库导出到本地Oracle数据库的方法 1.将服务器上的Oracle数据库导入到本地 在CMD模式下执行以下命令:   exp username1/[email protected]服务器端数据库 file=本地硬盘:/文件名.dmp   例如: exp admin/[email protected] file=e:db.dmp 2.建立本地数据库(默认已经安装Oracle客户端并且建立了本地数据库) 3.创建一个新用户,并赋予DBA权限 //创建一个用户名为tes

从远程服务器将Oracle数据库导出到本地Oracle数据库的方法

1.创建本地用户 SQL> create user test identified by 123456; 2.授权 SQL> grant connect,resource,dba to test; 3.远程数据库导出(远程用户具有dba权限) SQL> $exp userid=用户名/密码@远程IP地址:1521/数据库实例 file=d:/daochu.dmp; 4.导入到本地数据库 SQL> $imp test/[email protected] file=d:/daochu.