2016-07-07 421 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'目录 –

相关问题