2

我发现的所有搜索都显示了如何导入一个表或推荐 import-all-tables。如果我想从我的数据库中获取 440 个表中的 35 个怎么办?我可以只编写一个命令并用逗号分隔表,还是必须将其放入脚本中并一遍又一遍地复制和传递命令并每次更改表名?

我想做的事:

echo "Sqoop Import"
--options-file ${path} 
--table tbl1,tbl2,tbl3\
--target-dir ${path}
--m 1\  

我担心我可能不得不做的事情:

echo "Sqoop Import"
--options-file ${path} 
--table tbl1\
--target-dir ${path}
--m 1

wait 

echo "Sqoop Import"
--options-file ${path} 
--table tbl2\
--target-dir ${path}
--m 1
4

4 回答 4

1

显然一个 sqoop 开发人员和你一样想。:)

您可以使用 import-all-tables。
然后添加 --exclude-tables 逗号分隔的要从导入过程中排除的表列表。

https://sqoop.apache.org/docs/1.4.0-incubating/SqoopUserGuide.html#id1766722

于 2016-04-08T18:10:57.553 回答
1

使用--exclude-tables "table1,table2"选项忽略 table1 和 table2。

不要在表名之间添加空格(又名。"table1, table2"

于 2019-03-19T06:31:34.267 回答
0

您还可以对 Hive 导入使用相同的命令:

sqoop import-all-tables \
--connect jdbc:mysql://your_ip_address:3306/database_name \
--driver com.mysql.jdbc.Driver \
--username root \
--warehouse-dir temp_dir_for_staging \
--hive-import \
--hive-overwrite \
--hive-database hive_db \
--exclude-tables list_of_tables_to_be_excluded \
-m 1

请记住,在 Hive 中,您需要暂存区。

于 2017-08-17T07:28:36.533 回答
0
sqoop import-all-tables \
--connect jdbc:mysql://localhost/sqoop \
--username root \
--password hadoop \
--warehouse-dir /Sqoop21/AllTables \
--exclude-tables table1,tables2
于 2021-03-23T07:09:28.810 回答