我有一个包含大量表格(超过600个)的数据库,并希望使用sqoop将它们全部导入Hive。那是我用过的命令:
./sqoop import-all-tables --connect jdbc:oracle:thin:@//185.2.252.52:1521/orcl --username TEST --password test
导入始终失败,因为sqoop尝试导入一些不属于该用户的oracle系统表。
./sqoop list-tables --connect jdbc:oracle:thin:@//185.2.252.52:1521/orcl --username TEST --password test
list-tables列出了sql查询后面的相同表:
select * from all_tables;
相反,我想列出并导入(我的猜测是它是相同的表)这个查询会使用相同的表:
select * from user_tables;
有没有办法通过sqoop限制导入表?如果没有,有没有办法以某种方式配置用户权限,所以“select * from all_tables”将给我相同的表而不是“select * from user_tables”??
感谢
答案 0 :(得分:2)
在架构中创建一个名为ALL_TABLES
的同义词,指向USER_TABLES
视图。
SQL> select count(*) from all_tables;
COUNT(*)
----------
2769
SQL> select count(*) from user_tables;
COUNT(*)
----------
24
SQL> create synonym all_tables for user_tables;
Synonym created.
SQL> select count(*) from all_tables;
COUNT(*)
----------
24
SQL>
这应该欺骗脚本,除非它明确限定ALL_TABLES
视图及其所有者(例如:SYS.ALL_TABLES
)。