Informix資料匯入到oracle資料庫的方法

來源:互聯網
上載者:User

標籤:

前言:

不同類型的資料庫互導資料,由於資料庫機制不同,不能通過簡單的複製粘貼實現,還有由於檔案格式的不同,也不能簡單的匯出檔案,匯入資料庫。

關於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^_^

 

Informix資料匯入到oracle資料庫的方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.