外部表を使用したシャード・データベースへのデータのロード
次のトピックの例およびガイドラインを使用して、外部表を作成し、外部表からシャード表または重複表にデータをロードすることで、シャード・データベースにデータをロードできます。
このデータ・ロード方法は、ロードするデータがCSVファイルなどの外部ファイルに存在する場合に便利です。
外部表は、CREATE TABLE
文でORGANIZATION EXTERNAL
キーワードを使用して定義できます。この表は、シャードまたは重複ではなく、各シャードに対してローカルである必要があります。シャード表または重複表へのデータのロードには、外部表からの単純なINSERT … SELECT
文と、シャード表のデータのサブセットのみをフィルタ処理する条件が含まれます。
ファイルのアクセス時間とサイズに基づいて、ファイルを別のホストに保存することもできます。たとえば、シャード・カタログ・ホスト上の重複表のファイルをコピーし、すべてのシャードからアクセス可能なネットワーク共有上のシャード表のファイルを保持します。ロードを高速化するために、シャード表ファイルのコピーを各シャードに保持することもできます。
外部表の詳細は、Oracle Databaseユーティリティの外部表に関する項を参照してください。
重複表へのデータのロード
重複表のデータはシャード・カタログに存在するため、重複表へのデータのロードもシャード・カタログで実行されます。ロードが完了すると、データは自動的にシャードにレプリケートされます。
次の表が重複表として定義されているとします。
CREATE DUPLICATED TABLE StockItems (
StockNo NUMBER(4) PRIMARY KEY,
Description VARCHAR2(20),
Price NUMBER(6,2)
);
StockItems表へのデータのロードには、次のステップが必要です。
シャード表へのデータのロード
シャード表のデータはシャード間でパーティション化されるため、シャード表へのデータのロードは個々のシャードで実行する必要があります。ロードは、ソース・データ・ファイルが共有されている場合でも、すべてのシャードで同時に実行できます。
ロードのプロセスは重複表のロードと似ていますが、現在のシャードに属していない行をフィルタで除外するための追加のフィルタがINSERT … SELECT
文にあります。
たとえば、次のように作成されたシャード表があるとします。
CREATE SHARDED TABLE Customers (
CustNo NUMBER(3) NOT NULL,
CusName VARCHAR2(30) NOT NULL,
Street VARCHAR2(20) NOT NULL,
City VARCHAR2(20) NOT NULL,
State CHAR(2) NOT NULL,
Zip VARCHAR2(10) NOT NULL,
Phone VARCHAR2(12),
CONSTRAINT RootPK PRIMARY KEY (CustNo)
)
PARTITION BY CONSISTENT HASH (CustNo)
PARTITIONS AUTO
TABLESPACE SET ts1
;
この表にデータをロードするには、各シャードで次のステップを実行します。
外部キー制約を維持するには、ルート表から開始して表ファミリ階層を降順に、シャード表ごとに前述のステップを繰り返します。