您好,登錄后才能下訂單哦!
介紹一下具體場景
需要從現有在用的oracle中將歷史數據遷移出來并導入到hive中,存在幾個問題:1、現有oracle數據庫在使用無法整個庫導出,數據庫服務器沒有權限;2、由于各個數據提供方的各次升級,oracle數據庫采取添加字段而不刪除字段的方式更新,而hive中建立的表數據結構要按新的來,也就是說oracle導出的數據到hive表中需要做字段對應。
決定先將oracle導入到另一個oracle中,將oracle中表字段和hive中的表字段進行比對得到各個的對應關系,之后寫對應的sqoop語句對應利用ETL流程安裝賬期一天一天導入。
從一個oracle到另一個oracle導入的方案,利用大神寫出的sqluldr2 工具用來導出數據,導入利用
sqlldr 命令導入到另一個庫表中。
導出的具體命令
sqluldr2.bin user=root/pwd@tnsname query="select /*+ parallel(8) */ * from table " head=no File=/data/oracle/tmp/file 導出到本地目錄
導入的具體命令
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 是用來指定導入表的字段和分割符如下寫法
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) )
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。