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";;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.htmlSqoopwillbydefaultimportNULLvaluesasstringnull.HiveishoweverusingstringNtodenoteNULLvaluesandthereforepredicatesdealingwithNULL(likeISNULL)willnotworkcorrectly.Youshouldappendparameters−−null−stringand−−null−non−stringincaseofimportjobor−−input−null−stringand−−input−null−non−stringincaseofanexportjobifyouwishtoproperlypreserveNULLvalues.Becausesqoopisusingthoseparametersingeneratedcode,youneedtoproperlyescapevalueNtoN:Hive中的Null在底層是以“N”來存儲,而MySQL中的Null在底層就是Null,爲了保證數據兩端的一致性。在導出數據時採用−−input−null−string和−−input−null−non−string兩個參數。導入數據時採用−−null−string和−−null−non−string。3)執行Sqoop導出腳本[atguigu@hadoop102bin] 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;