我在MySQL数据库中有100个表,使用sqoop import-all-tables我想只导入50个表到hdfs,使用exclude命令我们必须指定50个表或者还有其他选项吗?
是的你是对的你可以使用Sqoop "import-all-tables"
和另一个参数--exclude-tables
,你可以用它来排除你不想在数据库中导入的一些表。您可以尝试的另一个选项是shell脚本,如下所示:
1)准备一个包含DBNAME.TABLENAME列表的输入文件
2)shell脚本将此文件作为输入,逐行迭代并为每一行执行sqoop语句
while read line;
do
DBNAME=`echo $line | cut -d'.' -f1`
tableName=`echo $line | cut -d'.' -f2`
sqoop import -Dmapreduce.job.queuename=$QUEUE_NAME --connect '$JDBC_URL;databaseName=$DBNAME;username=$USERNAME;password=$PASSWORD' --table $tableName --target-dir $DATA_COLLECTOR/$tableName --fields-terminated-by '\001' -m 1
done<inputFile