9(14)7.3Sqoop導出腳本14

7.3Sqoop導出腳本
1)編寫Sqoop導出腳本
在/home/atguigu/bin目錄下創建腳本sqoop_export.sh
[atguigu@hadoop102 bin]$ vim sqoop_export.sh
在腳本中填寫如下內容
#!/bin/bash

db_name=gmall

export_data() {
/opt/module/sqoop/bin/sqoop export
–connect “jdbc:mysql://hadoop102:3306/${db_name}?useUnicode=true&characterEncoding=utf-8”
–username root
–password 000000
–table KaTeX parse error: Undefined control sequence: \ at position 3: 1 \̲ ̲--num-mappers 1…db_name/ads/$1
–input-fields-terminated-by “\t”
–update-mode allowinsert
–update-key “tm_id,category1_id,stat_mn,stat_date”
–input-null-string ‘\N’
–input-null-non-string ‘\N’
}

case 1in"adsuvcount")exportdata"adsuvcount";;"adsuseractionconvertday")exportdata"adsuseractionconvertday";;"adsgmvsumday")exportdata"adsgmvsumday";;"all")exportdata"adsuvcount"exportdata"adsuseractionconvertday"exportdata"adsgmvsumday";;esacupdateinsertØupdatemodeupdateonlyallowinsertØupdatekeyØinputnullstringinputnullnonstringnullNhttp://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.htmlSqoopwillbydefaultimportNULLvaluesasstringnull.HiveishoweverusingstringNtodenoteNULLvaluesandthereforepredicatesdealingwithNULL(likeISNULL)willnotworkcorrectly.YoushouldappendparametersnullstringandnullnonstringincaseofimportjoborinputnullstringandinputnullnonstringincaseofanexportjobifyouwishtoproperlypreserveNULLvalues.Becausesqoopisusingthoseparametersingeneratedcode,youneedtoproperlyescapevalueNtoN:HiveNullNMySQLNullNullinputnullstringinputnullnonstringnullstringnullnonstring3Sqoop[atguigu@hadoop102bin]1 in "ads_uv_count") export_data "ads_uv_count" ;; "ads_user_action_convert_day") export_data "ads_user_action_convert_day" ;; "ads_gmv_sum_day") export_data "ads_gmv_sum_day" ;; "all") export_data "ads_uv_count" export_data "ads_user_action_convert_day" export_data "ads_gmv_sum_day" ;; esac 關於導出update還是insert的問題 Ø --update-mode: updateonly 只更新,無法插入新數據 allowinsert 允許新增 Ø --update-key:允許更新的情況下,指定哪些字段匹配視爲同一條數據,進行更新而不增加。多個字段用逗號分隔。 Ø --input-null-string和--input-null-non-string: 分別表示,將字符串列和非字符串列的空串和“null”轉換成'\\N'。 官網地址:http://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html Sqoop will by default import NULL values as string null. Hive is however using string \N to denote NULL values and therefore predicates dealing with NULL(like IS NULL) will not work correctly. You should append parameters --null-string and --null-non-string in case of import job or --input-null-string and --input-null-non-string in case of an export job if you wish to properly preserve NULL values. Because sqoop is using those parameters in generated code, you need to properly escape value \N to \\N: Hive中的Null在底層是以“\N”來存儲,而MySQL中的Null在底層就是Null,爲了保證數據兩端的一致性。在導出數據時採用--input-null-string和--input-null-non-string兩個參數。導入數據時採用--null-string和--null-non-string。 3)執行Sqoop導出腳本 [atguigu@hadoop102 bin] chmod 777 sqoop_export.sh
[atguigu@hadoop102 bin]$ sqoop_export.sh all
4)在MySQL中查看結果
SELECT * FROM ads_uv_count;
SELECT * FROMads_user_retention_day_rate;
SELECT * FROMads_user_action_convert_day;
SELECT * FROMads_gmv_sum_day;
SELECT * FROMads_gmv_sum_province;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章