2.1.1 CSVファイルからのデータのインポート

Oracle SQL DeveloperまたはOracle Databaseユーティリティ(SQL*Loaderや外部表など)を使用して、CSVファイルのデータをデータベースにインポートできます。

次に、Oracle SQL Loaderを使用してデータをデータベース表にロードする手順を示します。

前提条件として、次のSQL文を実行して、データベースで頂点(bank_accounts)表およびエッジ(bank_txns)表を作成する必要があります。
CREATE TABLE bank_accounts(id NUMBER, name VARCHAR2(10));
CREATE TABLE bank_txns(from_acct_id NUMBER, to_acct_id NUMBER, description VARCHAR2(10), amount NUMBER);

次に、次のステップを実行してデータをロードします。

  1. 次に示すように、bank_nodes.csvから頂点をロードするSQL*Loader制御ファイルを作成します。
    load data
    infile '<path_to_bank_nodes.csv>'
    into table bank_accounts
    fields terminated by "," optionally enclosed by '"'
    ( id, name )
  2. 次に示すように、コマンドラインからSQL*Loaderを起動して、前述の構成ファイルを使用してbank_accounts表の頂点をロードします。
    sqlldr <dbuser>/<password> CONTROL=<path_to_vertex_loader.ctl>

    bank_accounts表に1000行が正常にロードされました。

  3. 次に示すように、bank_edges_amt.csvからエッジをロードするSQL*Loader制御ファイルを作成します。
    load data
    infile '<path_to_bank_edges_amt.csv>'
    into table bank_txns
    fields terminated by "," optionally enclosed by '"'
    (from_acct_id,to_acct_id,description,amount)
  4. 次に示すように、コマンドラインからSQL*Loaderを起動して、前述の構成ファイルを使用してbank_txns表のエッジをロードします。
    sqlldr <dbuser>/<password> CONTROL=<path_to_edge_loader.ctl>

    bank_txns表に4996行が正常にロードされました。

  5. 次のSQL文を実行して、bank_accounts表に主キー制約を追加します。
    ALTER TABLE bank_accounts ADD PRIMARY KEY (id);
  6. 次のSQL文を実行して、主キー列をbank_txns表に追加し、ROWNUM値を移入してから、主キー制約を定義します。
    ALTER TABLE bank_txns ADD txn_id NUMBER;
    UPDATE bank_txns SET txn_id = ROWNUM;
    COMMIT;
    ALTER TABLE bank_txns ADD PRIMARY KEY (txn_id);
  7. 次のSQL文を実行して、bank_txns表に外部キー制約を追加します。
    ALTER TABLE bank_txns MODIFY from_acct_id REFERENCES bank_accounts(id);
    ALTER TABLE bank_txns MODIFY to_acct_id REFERENCES bank_accounts(id);
    
サンプルの銀行グラフ・データがデータベース表で使用できるようになりました。