您好,登錄后才能下訂單哦!
介紹一下具體場景
需要從現(xiàn)有在用的oracle中將歷史數(shù)據(jù)遷移出來并導(dǎo)入到hive中,存在幾個問題:1、現(xiàn)有oracle數(shù)據(jù)庫在使用無法整個庫導(dǎo)出,數(shù)據(jù)庫服務(wù)器沒有權(quán)限;2、由于各個數(shù)據(jù)提供方的各次升級,oracle數(shù)據(jù)庫采取添加字段而不刪除字段的方式更新,而hive中建立的表數(shù)據(jù)結(jié)構(gòu)要按新的來,也就是說oracle導(dǎo)出的數(shù)據(jù)到hive表中需要做字段對應(yīng)。
決定先將oracle導(dǎo)入到另一個oracle中,將oracle中表字段和hive中的表字段進行比對得到各個的對應(yīng)關(guān)系,之后寫對應(yīng)的sqoop語句對應(yīng)利用ETL流程安裝賬期一天一天導(dǎo)入。
從一個oracle到另一個oracle導(dǎo)入的方案,利用大神寫出的sqluldr2 工具用來導(dǎo)出數(shù)據(jù),導(dǎo)入利用
sqlldr 命令導(dǎo)入到另一個庫表中。
導(dǎo)出的具體命令
sqluldr2.bin user=root/pwd@tnsname query="select /*+ parallel(8) */ * from table " head=no File=/data/oracle/tmp/file 導(dǎo)出到本地目錄
導(dǎo)入的具體命令
sqlldr root/pwd@@ip:1521/tnsname control=/data/oracle/shell/xxx.ctl
data=/data/oracle/tmp/file
log=/data/oracle/log/file.log errors=0 rows=100000 bindsize=1024000000 direct=y;
xxx.ctl 是用來指定導(dǎo)入表的字段和分割符如下寫法
load data
truncate into table tablename
Fields terminated by ',' #文件的列分隔符
TRAILING NULLCOLS
(
IP char(255),
APPKEY char(255),
PLATFORM char(255),
PORTAL char(255),
COMPANYID char(255) )
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。