我在MySQL数据库中有100个表,使用sqoop import-all-tables我只想将50个表导入到hdfs,使用exclude命令,我们必须指定50个表,或者还有其他选择吗?
答案 0 :(得分:0)
是的,您可以使用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