
目次
前回の作業と今回の作業について
バケットからデータをロード
ロードした結果の確認
最後に
前回の作業と今回の作業について
前回は、Autonomous Data Warehouseにテーブルを作成し、ロード用のバケットを作成、ロード用のデータを準備しました。
今回は、実際にデータをロードします。アカウント作成から続いた環境構築編ですが、今回が最終回となります。
バケットからデータをロード
前回作成したバケット内のファイルからDBにデータをロードします。今回は、このような簡単なテーブルを作りました。
CREATE TABLE adwc_user.BAND ( id NUMBER NOT NULL, name VARCHAR2(20) NOT NULL, inst VARCHAR2(20) NOT NULL );
このテーブルにバケットからデータをコピーします。まずは、公式のドキュメントに倣って「|」区切りでデータを作成しました。
1|"Anthony"|"vocal"| 2|"Flea"|"bass"| 3|"Chad"|"dram"| 4|"Frusciante"|"guitar"|
dbms_cloudパッケージのcopy_dataプロシージャを使用します。前回、資格情報を格納するために使用したcreate_credentialと同じパッケージです。
begin dbms_cloud.copy_data( table_name =>'BAND', credential_name =>'OBJ_STORE_CRED', file_uri_list =>'https://swiftobjectstorage.[region name].oraclecloud.com/v1/[tenant name]/[backet_name]/[file_name]', format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true') ); end; /
まずここで、「Authorization failed for URI」のエラーで詰まりました。バケットにアクセスする際に認証のエラーが出ているようで、原因としては、前回作成した認証情報(’OBJ_STORE_CRED’)のユーザ名を間違えていました。
begin DBMS_CLOUD.create_credential ( credential_name => 'OBJ_STORE_CRED', username => '[name]', password => '[Auth Token]' ) ; end; /
この部分で「name」に入れるのは、[adwc_user]でもなく、[admin]でもなく、テナントの下の「ユーザ名」でした。アカウントを登録した際のメールアドレスになっている方が大半かと思います。落ち着いて考えると当たり前なのですが、注意が必要かと思います。
ロードした結果の確認
早速、select すると値が格納されていることが確認できました。
ID NAME INST ---------- -------------------- -------------------- 1 Anthony vocal 2 Flea bass 3 Chad dram 4 Frusciante guitar
続いて、カンマ区切りにしてみました。
1,"Neville","key", 2,"Porter","bass", 3,"Nocentelli","gutar", 4,"Joe","perc",
そのまま試すと「Reject limit reached」とエラーが出ました。そこで、formatの引数を変更しました。
※format => json_object(‘type’ value ‘csv’)に変更
ID NAME INST ---------- -------------------- -------------------- 1 Neville key 2 Porter bass 3 Nocentelli gutar 4 Joe perc
無事に格納されました。
format => json_object('ignoremissingcolumns' value 'true', 'removequotes' value 'true')
この部分を取り込みたいファイルの形式に合わせていく形です。記述の仕方は、下のリンクを参照ください。
最後に
全9回を通して、「アカウント登録→Autonomous Data Warehouseのインスタンス作成→データのロード」という一連の流れをご紹介しました。大幅に横道に逸れたり、詰まったりしたため9回という長尺になってしまいましたが、ADWCの環境構築編については、この回で終了したいと思います。読んでいただき誠にありがとうございました。次回連載は、Oracle CloudのComputeの部分から、インフラ構築編をお送りします。その際は、AWSとの比較なども入れつつ検証を行いたいと思います。