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 *fromall_tables」が「select*fromuser_tables」と同じテーブルを提供するようにユーザー権限を構成する方法はありますか??

ありがとう

4

1 に答える 1

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

于 2013-01-17T15:22:16.637 に答える