以下の手順で、表のデータをダウンロードするアプリを作成します。
- パーシング・スキーマから、表をひとつ選択する。
- 選択した表をオブジェクト・ストレージに、CSV形式でエクスポートする。DBMS_CLOUD.EXPORT_DATAを呼び出します。
- 出力されたオブジェクトのURLを取得する。
- オブジェクトのURLにリダイレクトし、ブラウザからダウンロードする。
表のエクスポート先となるバケットを作成します。
OCIのコンソールより、ストレージのオブジェクト・ストレージとアーカイブ・ストレージのバケットを開きます。
バケットの作成をクリックします。
バケット名はdownloadとします。それ以外はデフォルトのまま変更せず、作成を実行します。
バケットdownloadが作成されます。アクセス制御の実装を省くため、バケットdownloadの操作メニューを開き、可視性の編集を実行します。
可視性としてパブリックを選択します。ユーザーにこのバケットのオブジェクトのリスト表示を許可については、チェックを外します。
変更の保存をクリックします。
バケットdownloadの準備は以上で完了です。
APEXのアプリケーション・ビルダーに移ります。
アプリケーション作成ウィザードを起動し、空のアプリケーションを作成します。名前は表のエクスポートとします。
アプリケーションの作成を実行します。
アプリケーションが作成されたら、ページ・デザイナでホーム・ページを開きます。
識別のタイトルは表のエクスポート、タイプは静的コンテンツとします。
オブジェクト・ストレージの操作に使用するページ・アイテムを4つ、P1_REGION、P1_NAMESPACE、P1_BUCKETおよびP1_CREDENTIALを作成します。すべてタイプはテキスト・フィールドです。
ページ・アイテムP1_REGIONのラベルはリージョンとします。
ページ・アイテムP1_NAMESPACEのラベルはネームスペースとします。
ページ・アイテムP1_CREDENTIALのラベルはクリデンシャルとします。
すべてに値が設定されていないとオブジェクト・ストレージの操作ができないため、作成した4つのページ・アイテムを選択し、検証の必須の値をONにします。
エクスポートする対象の表の選択に使用する、ページ・アイテムを作成します。
アイテムの作成を実行します。
識別の名前はP1_TABLE_NAME、タイプとしてポップアップLOVを選択します。ラベルはエクスポートする表とします。検証の必須の値はONです。
LOVのタイプとしてSQL問合せを選択し、SQL問合せに以下を記述します。アプリケーションのパーシング・スキーマに含まれる表から、エクスポートする表を選択します。
select table_name from user_tables order by 1
追加値の表示はOFF、NULL値の表示をONとし、NULL表示値として- エクスポートする表を選択する -を記述します。
選択した表のオブジェクト・ストレージへのエクスポートと、ブラウザへのダウンロードを実行するボタンを作成します。
ボタンの作成を実行します。
識別のボタン名はB_DOWNLOAD、ラベルはダウンロードとします。動作のアクションはデフォルトのページの送信のままとします。
ボタンを押したときに実行されるプロセスを作成します。
左ペインでプロセス・ビューを表示し、プロセスの作成を実行します。
作成したプロセスの識別の名前はダウンロードとします。タイプはコードを実行を選択します。ソースの位置はローカル・データベース、PL/SQLコードとして以下を記述します。
サーバー側の条件のボタン押下時に、B_DOWNLOADを指定します。
以上でアプリケーションは完成です。
アプリケーションを実行すると、先頭のGIF動画のように動作します。
出力先として指定したバケットには、以下のように一時ファイルが残ります。
ハウスキーピングのタスクなどは、要件に応じて実装を行う必要があるでしょう。
今回作成したアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/csv-export-and-download.sql
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完