溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

記一次從oracle到hive的歷史數(shù)據(jù)遷移(一)

發(fā)布時間:2020-07-19 22:09:23 來源:網(wǎng)絡(luò) 閱讀:8438 作者:綠箭俠1 欄目:關(guān)系型數(shù)據(jù)庫

介紹一下具體場景

    需要從現(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) )


向AI問一下細節(jié)

免責(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)容。

AI