1

我有一个包含很多表(超过 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”相同的表?

谢谢

4

1 回答 1

2

Create a synonym called ALL_TABLES in your schema that points to the USER_TABLES view.

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>

That should fool the script, unless it explicitly qualifies the ALL_TABLES view with its owner (eg: SYS.ALL_TABLES).

于 2013-01-17T15:22:16.637 回答