如何将具有Sqoop的Oracle DB中的所有(且仅)特定用户的表导入Hive

时间:2013-01-17 14:35:54

标签: oracle hive sqoop

我有一个包含大量表格(超过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”??

感谢

1 个答案:

答案 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)。