apache sgoop 導入數據到 oracle、導出數據到 oracle 實現

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

業務場景:是在oracle 數據庫和? hive 數據庫中 ,有多個相同結構的表,要求數據從2個庫定時雙向同步。

(導出時可以只導出部分字段,則此時 hive 庫和 oracle 庫中表結構可以并非完全一致)

1. 寫一個文本文檔,把要導入的表名和庫名先編輯好,格式如 oracle_table_list_append.txt :

wate.BUSI_xxx
wate.xxx_xxx_INFO
wate.xxx_USER_xxx
... # wate 是 oracle 數據庫名, BUSI_xxx 是表名。
# 可寫多行,腳本執行時讀取每個一行,循環導入每個表的數據。

編寫sgoop? import 腳本并執行即可把數據從 oracle 數據庫導入到 hive 數據庫中。

current=`date -d "yesterday" +%Y-%m-%d`     #獲取當前時間
#current=`date -d "yesterday 20190110" +%Y-%m-%d`     #獲取指定日期的前一天begin=${current}" 00:00:00"sed -i '/^$/d' /opt/xxx/sqoop/conf/oracle_table_list_append.txt
cat /opt/xxx/sqoop/conf/oracle_table_list_append.txt|while read line
doOLD_IFS="$IFS"IFS="."arr=($line)db_name=${arr[0]}table_name=${arr[1]}echo "####begin to sqoop from oracle "${db_name}.${table_name} "......"sqoop import \--connect jdbc:oracle:thin:@192.168.xx.xx:1521/${db_name} \--username 數據庫名 \--password 數據庫密碼 \--table ${table_name} \--where "creationtime >=to_date('${begin}','yyyy-mm-dd hh24:mi:ss') or xxxtime>=to_date('${begin}','yyyy-mm-dd hh24:mi:ss') or dxxtime>=to_date('${begin}','yyyy-mm-dd hh24:mi:ss') " \--hive-drop-import-delims \--null-string '\\N' \--null-non-string '\\N' \--fields-terminated-by '\007' \--lines-terminated-by '\n' \--hive-import \--hive-table hive數據庫名.${table_name} \-m 10rc=$?if [ $rc -ne 0 ]thenecho "#### sqoop from oracle "${db_name}.${table_name} " failed......"# echo "#### sqoop from oracle "${db_name}.${table_name} " failed......"|mail -s "failed crontab_${current}" xxx@163.comelseecho "####sqoop from oracle "${db_name}.${table_name} " successed......"fidone
current=`date "+%Y-%m-%d %H:%M:%S"`     #獲取當前時間
end_timeStamp=`date -d "$current" +%s`
du_time=$[end_timeStamp-begin_timeStamp]
echo "sqoop total time used:" $du_time "s" 
--where 此參數是條件過濾,全表導入,可不加此參數。

2.??編寫sgoop? export 腳本并執行,則可把數據從 hive 庫 導出到 oracle 數據庫。?

current_datetime=`date "+%Y-%m-%d %H:%M:%S"`
echo "Start Timing Task:"$current_datetime
current=`date "+%Y-%m-%d %H:%M:%S"`     #獲取當前時間
begin_timeStamp=`date -d "$current" +%s`table_name="cxx_xxx_day"
day=`date -d -1days "+%Y%m%d"` #昨天(此表以天分區,每次只導一天的數據)echo "####開始導出"${day}"的數據 into oracle oracle數據庫名."${table_name} "......"sqoop export \--connect "jdbc:oracle:thin:@192.168.xxx.xxx:1521/oracle數據庫連接名" \--username oracle數據庫名 \--password oracle數據庫密碼 \--table ${table_name} \--export-dir "/user/hive/xxx/hivexxx.db/xxx_xxx_day/day=${day}" \--columns xxx_no,datatime,xxx_value,xxx_status,xxx_voage,staxx_str,stxxxs_hex,fy_id \--input-fields-terminated-by '\007' \--input-lines-terminated-by '\n' \--input-null-string '\\N' \--input-null-non-string '\\N' \--m 4rc=$?if [ $rc -ne 0 ]thenecho "Timing Task Error:"echo "####sqoop from hive into oracle "${table_name} " failed......"elseecho "####sqoop from hive into oracle "${table_name} " successed......"fi
current=`date "+%Y-%m-%d %H:%M:%S"`     #獲取當前時間
end_timeStamp=`date -d "$current" +%s`
du_time=$[end_timeStamp-begin_timeStamp]
echo "sqoop total time used:" $du_time "s"
--export-dir 指定HDFS上的文件路徑
--columns 指定要導出的列,可以只導出部分列

?

3. 官網說明文檔:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html

要查更多參數和用法可以直接查詢官方文檔。

import說明文檔地址:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_literal_sqoop_import_literal

export說明文檔地址:http://sqoop.apache.org/docs/1.4.7/SqoopUserGuide.html#_literal_sqoop_export_literal

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/447409.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/447409.shtml
英文地址,請注明出處:http://en.pswp.cn/news/447409.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

最佳的開源云項目有哪些?

Linux.com和The New Stack聯合起來做了一個調查:你認為的最受歡迎的開源云項目是哪些?調查涵蓋了hypervisors、IaaS、PaaS、管理和服務開通和其它類別的開源項目。所有項目較為成熟的、有規模的開源云項目。下一代的企業正在使用開放云技術打造完全不同的…

我們正處在“后開源”時代?

越來越多的軟件不是用來出售的,而是用來增強互聯網上所提供的各種服務的功能。開源的實際好處已經超過了你所看到的一面,但是現在還是有人糾結是用什么樣的開源協議,只是不明白為什么還要和開源協議作斗爭呢?自由軟件和開源軟件支…

解決:-source 1.6 中不支持 diamond 運算符 [ERROR] (請使用 -source 7 或更高版本以啟用 diamond 運算符)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 工程打包 mvn clean install 執行報錯&#xff1a; 2. 解決方法&#xff0c;在pom中加上如下配置&#xff1a; <plugin><gr…

是什么摧毀了程序員的工作效率

本文是html5tricks原創翻譯&#xff0c;轉載請看清文末的轉載要求&#xff0c;謝謝合作&#xff01; 下圖是摘自網上有關程序員工作效率的論述。 正如Homer Simpson所說&#xff0c;如果這是真的&#xff0c;那就有意思了。 我之所以不能一針見血地發現如何才能高效工作的秘密…

解決:single failed: For artifact {null:null:null:jar}: The groupId cannot be empty. 把工程依賴的jar包打到入jar中

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 執行 mvn clean install 報錯&#xff1a; Execution make-assembly of goal org.apache.maven.plugins:maven-assembly-plugin:2.4…

解決:Exception in thread main java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExe

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.報錯&#xff1a; Exception in thread "main" java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreEx…

云計算技術背后的天才程序員:Open VSwitch鼻祖Martin Casado

摘要&#xff1a;Martin Casado被稱為軟件定義網絡之父&#xff0c;OpenFlow的發明人、Nicira的創始人、硅谷最炙手可熱的“40 under 40”之一&#xff0c;另外&#xff0c;他提交的虛擬交換機Open VSwitch的第一個Commit揭開波瀾壯闊的軟件定義網絡時代。 【編者按】在一次采…

Maven Helper 安裝使用(jar 包管理工具)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一般用這款插件來查看maven的依賴樹。在不使用此插件的情況下&#xff0c;要想查看maven的依賴樹就要使用Maven命令maven dependency:tr…

云計算技術背后的那些天才程序員:KVM之父Avi Kivity

摘要&#xff1a;KVM以其精簡的架構&#xff0c;清晰的定位獲得Linux社區多數開發人員的支持并快速被合并入主干&#xff0c;從而成為x86全虛擬化技術的一顆新星&#xff0c;其提出者Avi Kivity對于計算機體系架構和Linux內核有深入理解&#xff0c;并且精通匯編和C。 提到以色…

解決:Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1.執行&#xff1a; java -jar xxx.0.0.1-SNAPSHOT.jar 報錯&#xff1a; Unable to access jarfile xxx-0.0.1-SNAPSHOT.jar 2.原…

與Linus Torvalds“并列”,虛擬化天才程序員法布里斯貝拉

摘要&#xff1a;談起阿蘭圖靈、高德納、艾茲赫爾戴克斯特拉&#xff0c;我們并不陌生&#xff0c;這些振聾發聵名字背后是顛覆了人類生活的現代計算機工業。然而有些人的榮譽卻遠低于他的貢獻&#xff0c;比如Fabrice&#xff0c;過去20年最閃亮和最有影響力的程序員之一。 【…

工具類:獲取 spring 容器中 bean

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 package com.orange.utils;import org.springframework.beans.BeansException; import org.springframework.context.ApplicationConte…

數據vs.算法,究竟誰更重要

摘要&#xff1a;數據和算法究竟哪個更重要并沒有一個明確的界定&#xff0c;根據不同的情境和應用&#xff0c;它們發揮的作用不同。雖然實際情況確實如此&#xff0c;但是在數據為王的時代&#xff0c;算法的關心似乎已只停留在某些領域或者某些公司里面。 【編者按】隨著服…

JDK8 集合排序 xxxList.stream.sorted(...)

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 # 默認 list.stream().sorted() list.stream().sorted(Comparator.reverseOrder()) # 按字段排序 xxxList.stream().sorted(Comparato…

云數據中心選址PK:微軟第一,IBM第二,谷歌最少

摘要&#xff1a;多區域數據中心往往可以側面說明服務的可用性&#xff0c;在這個方面&#xff0c;Azure以12個區域領先&#xff0c;接著是Softlayer 9個&#xff0c;Amazon 8個&#xff0c;Rackspace 6個。Google比較落后&#xff0c;只有3個。 【編者按】當下&#xff0c;各…

解決:Unexpected token (START_OBJECT), expected START_ARRAY: need JSON Array to contain As.WRAPPER_ARRA

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. redisTemplate 報錯&#xff1a; Caused by: com.fasterxml.jackson.databind.JsonMappingException:Unexpected token (START_OBJEC…

用戶暴增下的收入降低,AWS面臨尷尬

摘要&#xff1a;雖然摩爾定律和規模經濟會帶來成本效益&#xff0c;但是在大量的競爭下&#xff0c;AWS的收益已明顯降低&#xff0c;而10%的股價下降更帶來了投資者的不滿。 【編者按】雖然亞馬遜的云業務遠遠超過了IBM、HP和Google等巨頭科技軟件公司&#xff0c;但是其增長…

解決:Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 報錯&#xff1a; Caused by: redis.clients.jedis.exceptions.JedisDataException: WRONGTYPE Operation against a key holding t…

為什么軟件測試需要變革?

摘要&#xff1a;世易時移&#xff0c;現今的科技發展一日千里&#xff0c;軟件測試這門科學也到了該進行革命的時候了。作者Bhumika Mehta認為軟件測試需要的就是想法與創意。沒有想法的測試人員可能在測試這條路上不會走得太遠。 世易時移&#xff0c;現今的科技發展一日千里…

websocke 在線測試地址

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 記錄一個websocke在線測試地址&#xff1a; http://www.websocket-test.com/