2016-07-07 420 views

回答

0

有很多方法可以實現這一點。

  1. ,如果你要導入MySQL數據庫中的所有表,你可以使用:import-all-tables - 你也可以使用此參數--exclude-tables <tables> - 逗號分隔值 - 從impor-all-tables

  2. 排除某些表(S)如果你想導入的一些表(有意義的數據)的一些數據,你可以使用:Free-form Query Imports

  3. 如果要導入表的數量,就可以對shell腳本:

    #!/bin/sh 
    
    i=0 
    while [ ${i} -le 5 ] 
    do 
        echo "importing table a_0_${i}" 
        #here write your full sqoop command, this is just an example 
        #sqoop import --connect --table a_0_${i} 
        i=$((i + 1)) 
    done 
    

現在運行shell腳本:sqoop命令將按邏輯運行6次並導入6個表。

$ ./importAll.sh 
importing table a_0_0 
importing table a_0_1 
importing table a_0_2 
importing table a_0_3 
importing table a_0_4 
importing table a_0_5 

注:你必須根據你的需要來修改shell腳本邏輯。我建議的解決方案是基於所提供的詳細信息。

+0

嗨,謝謝差別很大,我認爲解決方案2是合適的,因爲我有20W +表分佈在數百臺機器,我必須考慮每個數據庫的連接數。我打算使用union all來組合多個表,你知道如何實現嗎? – Jiangbo

+0

20W +表是什麼意思?我認爲對於使用'UNION',你將不得不考慮像mysql一樣的列類型的需求,並且每個'UNION'子句中的列數都應該匹配。還要考慮'UNION'只會導出唯一的數據,您可能想使用'UNION ALL'。另外,選項2將把所有表導出到一個'hdfs'目錄 –

相關問題