0

SQL*Loader: Oracle は、ORACLE_LOADER アクセス ドライバを介してこの機能を使用し、データをフラット ファイルからデータベースに移動します。

データ・ポンプ:データ・ポンプ・アクセス・ドライバを使用して、データをデータベースから独自のOracle形式のファイルに移動し、その形式のファイルからデータベースに戻します。

SQL*LoaderまたはData Pumpユーティリティでデータ・ロードを実行でき、データ・ポンプ・ユーティリティでもデータ・アンロードを実行できる場合:

  1. 外部テーブルを使用することで達成できる、前述のユーティリティでは実現できない追加の利点はありますか?

  2. 以下の Oracle テーブル作成コマンドは、Oracle テーブルのように見えるテーブルを作成します。なぜ、Oracle はそれ外部テーブルとして呼び出すように指示するのでしょうか?

    create table export_empl_info organization external
      ( type oracle_datapump
        default directory xtern_data_dir
        location ('empl_info_rpt.dmp')
         ) as select * from empl_info;
    
4

3 に答える 3

3

「外部テーブルを使用することで達成できる追加の利点はありますか?前述のユーティリティのどれもそれ自体では実行できませんか?」

SQL * loaderとDatapumpはどちらも、データベースでデータにアクセスする前に、データをテーブルにロードする必要があります。一方、外部テーブルにはSELECTステートメントを介してのみアクセスします。これははるかに柔軟なメカニズムです。

「それでは、なぜオラクルはそれを外部テーブルと呼ぶように私たちに言っているのですか?」

うーん、それは外部だからです。データは、OSによって制御される1つまたは複数のファイルに存在します。次のようなOSコマンドを実行することで、外部テーブルのデータを変更できます。

$>  cp wnatever.csv external_table_data.csv

内部データベーステーブルには、REDO、ロールバック、フラッシュバッククエリ、またはその他の付属品はありません。

于 2013-01-27T22:26:15.590 に答える
1

私にとっての外部テーブルの主な利点は次のとおりだと思います。

i) ホスト コマンドを実行してデータをインポートする必要がないため、データベース内からコード全体を制御する Oracle の傾向がサポートされます。11g での前処理により、ftp を介したリモート ファイルへのアクセス、圧縮ファイルの使用、複数のファイルの 1 つへの結合などが可能になります。

ii) ロード プロセス中に複雑なデータ変換を適用することによる、より効率的なロード。集計、マージ、複数テーブルの挿入など

私はこれをデータ ウェアハウスの読み込みに使用しましたが、標準データ ファイルの読み込みまたはアクセスが必要なシナリオはすべて、外部テーブルを使用する候補です。SQL*Loader は、クライアントまたは他のホスト システムから Oracle データベースにロードするためのツールとしての地位を維持しています。Data Pump は Oracle データベース間でデータを転送するためのものなので、かなり異なります。

外部テーブルの制限の 1 つは、ストリーム データを処理しないことです。レコードを区切る必要があります。これは 10.2 では当てはまりましたが、それ以降許可されているかどうかはわかりません。

それらの情報については、システム カタログ ビュー ALL/DBA/USER_EXTERNAL_TABLES を使用してください。

于 2013-01-27T10:41:12.157 に答える
0

RE: データのロードに外部テーブルと sqlldr を使用するのはなぜですか? 主に、サーバー管理の並列処理とクライアント管理の並列処理を比較します。

于 2013-10-31T02:54:03.937 に答える