はじめに
Oracle APEXアプリケーションのエクスポートではアプリケーションで利用しているオブジェクトやデータも含めることができます。今回データも含めてエクスポートし、別のワークスペースにインポートしてみました。
環境はAutonomous Databaseを用い、エクスポートするアプリケーションは、TASKSという表を元にウィザードで作成したシンプルなアプリケーションにしました。
アプリケーションのエクスポート
エクスポートに含めるオブジェクトの設定
エクスポートに含めるオブジェクトを設定します。
アプリケーション・ビルダーでアプリケーションを選択し、サポートするオブジェクトを開きます。
このUIでエクスポートに含めるデータベース・オブジェクト定義、データなどを定義できます。
インストールからインストール・スクリプトを選択します。
続けて作成をクリックします。
スクリプトにはタイプがあります。既存の表TASKSから定義スクリプトを作成するため、*データベース・オブジェクトから作成を選択します。
次にスクリプト属性として、名前、順序、オブジェクト・タイプを以下のように指定して、次をクリックします。
名前:任意の名前
順序:10 順序はスクリプトが実行される順番で使用されます。今回は1つだけなのでデフォルトの10のままにしました。
オブジェクト・タイプ:TABLE
対象のオブジェクトを指定します。TASKSを選択して次へをクリックします。
TASKS表のDDLが表示されますので、確認後、作成をクリックします。
表を作成するスクリプトが作成されました。
データもエクスポートに含めるため、データ・パッケージを作成します。右側からデータ・パッケージの作成を選択します。
画面はスクリプトの作成でデータ・パッケージを選択した場合も同じですが、こちらのショートカットから進むと、既にTASKSが選択された状態で表示がされます。そのまま次を選択します。
確認の画面です。ロード後に削除が有効の場合、インポート対象のAPEXではにデータ・パッケージのファイルは削除されます。そのままにして終了をクリックします。
サポートするオブジェクトにデータ・パッケージのスクリプトが作成されました。
データ・パッケージのスクリプトの内容を見ると以下のようになっています。
begin --TASKS: 73/10000 行がエクスポートされました, APEX\$DATA\$PKG/TASKS$652419 apex_data_install.load_supporting_object_data(p_table_name => 'TASKS', p_delete_after_install => true ); end;
APEX\$DATA\$PKG/TASKS$652419は静的アプリケーション・ファイルの名前です。
静的アプリケーション・ファイルを確認してみます。
アプリケーションのホームから共有コンポーネントを選択し、ファイルとレポートにある静的アプリケーション・ファイルをクリックします。
スクリプトの名前と同じzipファイルの存在が確認できます。スクリプト設定のロード後に削除が有効の場合、こちらの静的アプリケーション・ファイルがインポート先のAPEXで削除されます。
無効にするとインポート後もアプリケーションの静的アプリケーション・ファイルとして利用できます。
エクスポートの実行
静的アプリケーション・ファイルのダウンロード
アプリケーションのエクスポートでは静的アプリケーション・ファイルは含まれないので、zipファイルのダウンロードリンクをクリックし、手動でダウンロードします。
アプリケーションのエクスポート
次にアプリケーションをエクスポートします。ホームからエクスポート/インポートを選んで、エクスポートをクリックします。
サポートするオブジェクトの定義がはいになっていることを確認し、エクスポートします。
アプリケーションのインポート
ダウンロードした静的アプリケーションファイルとエクスポートしたSQLファイルf104.sqlをローカルPCの同じフォルダに配置して、何もアプリケーションを作成していない異なるワークスペースにインポートしてみます。アプリケーション・ビルダーからインポートを選択します。
出力されたf104.sqlを選択して、次をクリックします。
インストールの確認です。今回アプリケーションIDは変わっても問題がないため、そのままインストールします。
インストール中となり、
その後、サポートするオブジェクトが含まれているため、以下のような確認画面が表示されます。
インストールの詳細をプレビューをクリックするとこのような画面が表示されます。
プレビューを閉じて、サポートするオブジェクトのインストールを選ぶと、インストールが完了しました。
インストール・サマリーはこのような内容でした。
インポートしたアプリケーションの確認
インポートしたアプリケーションでユーザにロール割り当てを実施します。
その後、アプリケーションの実行をクリックします。ログイン画面が表示され、
レポートにアクセスしデータも確認することができました。
おわりに
Oracle APEXで、アプリケーションで利用するオブジェクトを含めてアプリケーションのエクスポートとインポートを試してみました。気づいたところとして、データ・パッケージのスクリプトで73/10000 行がエクスポートされました
とあるように出力できるデータは10000件が最大になるようです。(20000件のデータを持っている表で試すとエラーにはならず10000件のみ抽出されていました、変更できるような場所は見当たらず。。。)。
データのエクスポート/インポートはデータベースの機能でもできますし、要件にあわせて利用いただければいいかな、と思いました。
参考にさせていただいた情報
http://apexugj.blogspot.com/2021/11/new212-data-packager.html
https://doyensys.com/blogs/packaging-data-with-your-app-export-in-oracle-apex/