以前にOracle APEXのアプリケーションのエスクポート・ファイルをコマンドラインから実行する(つまりアプリケーションとしてインポートする)方法について記事を書きました。
インポートする元となるアプリケーションのエクスポートを行う方法ですが、以下3つがあるでしょう。
- アプリケーション・ビルダーの画面から行う。
- APIのAPEX_EXPORT.GET_APPLICATIONを呼び出す。
- SQLclのapex exportコマンドを使用する。
最初にSQLclを準備します。以下のURLにアクセスし、ダウンロードします。
https://www.oracle.com/database/technologies/appdev/sqlcl.html
SQLclはJavaで作られているので、実行するコンピューターにJavaをインストールしておく必要があります。
Javaが入っていれば、ダウンロードしたzipファイルを展開しbin/sql(またはsql.exe)を実行するとSQLclが使えるようになります。
$ ./sql
SQLcl: 金 2 19 14:47:10 2021のリリース20.4 Production
Copyright (c) 1982, 2021, Oracle. All rights reserved.
ユーザー名 (''?) system
パスワード (**********?) ******
Last Successful login time: 金 2月 19 2021 14:47:18 +09:00
接続先:
Oracle Database 18c Express Edition Release 18.0.0.0.0 - Production
Version 18.4.0.0.0
SQL> alter session set container = xepdb1;
Sessionが変更されました。
SQL>
コマンドライン・ツールとしては、sqlplusと大差ない(より高機能)です。
そしてSQLclには、apexのためのコマンドが含まれています。? apexまたはhelp apexで利用可能なコマンドが一覧されます。
SQL> ? apex
使用可能なオプション:
list: データベースにインストールされているアプリケーションをリストします。
log: APEX_WORKSPACE_LOG_SUMMARYからAPEXアプリケーションの使用状況をレポートします。
export: APEXアプリケーションまたはワークスペース(あるいはその両方)をエクスポートします。
SQL>
apex listによって作成されているアプリケーションがリストされます。
SQL> apex list
WORKSPACE_ID WORKSPACE APPLICATION_ID APPLICATION_NAME BUILD_STATUS LAST_UPDATED_ON
___________________ _____________________________ _________________ ___________________________________________________ __________________ ________________________
10 INTERNAL 4411 Oracle APEX System Messages and Native Types Run and Develop 09-OCT-20
10 INTERNAL 4155 Scheme Authentication Login Run and Develop 09-OCT-20
12 COM.ORACLE.CUST.REPOSITORY 8842 Universal Theme Sample Application Run and Develop 24-SEP-20
10 INTERNAL 4000 Oracle APEX AppBuilder Run and Develop 19-JAN-21
10 INTERNAL 4020 Oracle APEX - Create App Wizard Run and Develop 22-OCT-20
10 INTERNAL 4350 Oracle APEX Workspace Administration Run and Develop 19-JAN-21
10 INTERNAL 4050 Oracle APEX Internal Administration Run and Develop 19-JAN-21
10 INTERNAL 4550 Oracle APEX Login Run and Develop 22-OCT-20
10 INTERNAL 4600 Oracle APEX Issues Run and Develop 22-OCT-20
10 INTERNAL 4650 Oracle APEX Feedback Run and Develop 22-OCT-20
10 INTERNAL 4700 Oracle APEX New Service Signup Run and Develop 09-OCT-20
10 INTERNAL 4750 Oracle APEX Productivity and Sample Applications Run and Develop 22-OCT-20
10 INTERNAL 4500 Oracle APEX SQL Workshop Run and Develop 22-OCT-20
10 INTERNAL 4300 Oracle APEX Data Workshop Run and Develop 22-OCT-20
10 INTERNAL 4400 Oracle APEX Application Migration Run and Develop 19-JAN-21
10 INTERNAL 4900 Oracle APEX Websheets Run and Develop 09-OCT-20
10 INTERNAL 4850 Oracle APEX RESTful Services Run and Develop 22-OCT-20
2728471333018836 APEXDEV 101 Employees Run and Develop 09-FEB-21
2728471333018836 APEXDEV 104 Sample Trees Run and Develop 09-FEB-21
2728471333018836 APEXDEV 103 Tasks Run and Develop 09-FEB-21
2728471333018836 APEXDEV 102 Material APEX - Demo Run and Develop 27-SEP-18
2728471333018836 APEXDEV 100 PL/SQL Gateway Run and Develop 09-FEB-21
SQL>
こうして見ると、普段、アプリケーションを開発するときに使用しているアプリケーション・ビルダーやその他の機能自体がAPEXで作られたアプリケーションであることがよくわかります。
一番左にワークスペースIDが表示されています。apex exportコマンドに-instanceオプションと-workspaceid ワークスペースIDをつけて実行することで、指定したワークスペースに含まれるすべてのアプリケーションがSQLファイルとしてエクスポートされます。
SQL> apex export -instance -workspaceid 2728471333018836
Exporting Application 100:'PL/SQL Gateway'
Exporting Application 101:'Employees'
Exporting Application 102:'Material APEX - Demo'
Exporting Application 103:'Tasks'
Exporting Application 104:'Sample Trees'
Exporting Application 8842:'Universal Theme Sample Application'
SQL>
実際に作成されたファイルを確認します。
SQL> !
$ ls *.sql
f100.sql f101.sql f102.sql f103.sql f104.sql f8842.sql
$
apex exportのみで実行すると、使用可能なオプションが一覧されます。画面から設定できる内容は一通り指定可能です。
SQL> apex export
使用可能なオプション:
-applicationid: エクスポートされるアプリケーションのID
-workspaceid: エクスポートされるすべてのアプリケーションまたはエクスポートされるワークスペースのワークスペースID
-instance: すべてのアプリケーションをエクスポートします
-expWorkspace: -workspaceidで識別されるワークスペース、または-workspaceidが指定されていない場合はすべてのワークスペースをエクスポートします
-expMinimal: ワークスペース定義、ユーザーおよびグループのみをエクスポートします
-expFiles: -workspaceidで識別されるすべてのワークスペース・ファイルをエクスポートします
-skipExportDate: アプリケーション・エクスポート・ファイルからエクスポート日付を除外します
-expPubReports: ユーザーが保存したすべてのパブリック対話型レポートをエクスポートします
-expSavedReports: ユーザーが保存したすべての対話型レポートをエクスポートします
-expIRNotif: すべての対話型レポート通知をエクスポートします
-expTranslations: 変換リポジトリから、変換マッピングとすべてのテキストをエクスポートします
-expFeedback: すべてのワークスペースのチーム開発フィードバック、または-workspaceidで識別されるチーム開発フィードバックをエクスポートします
-expTeamdevdata: すべてのワークスペースのチーム開発データ、または-workspaceidで識別されるチーム開発データをエクスポートします
-deploymentSystem: エクスポートされるフィードバックのデプロイメント・システム
-expFeedbackSince: YYYYMMDDという書式の日付以降のチーム開発フィードバックをエクスポートします
-expOriginalIds: アプリケーションのインポート時のIDが、エクスポートにそのまま表示されます
-expNoSubscriptions: サブスクライブされたコンポーネントへの参照はエクスポートされません
-expComments: 開発者コメントをエクスポートします
-expSupportingObjects: はい(Y)、いいえ(N)またはインストール(I)を渡して、デフォルトをオーバーライドします
-expACLAssignments: ACLユーザー・ロール割当てをエクスポートします
-dir: 指定されたディレクトリ(-dir some/sub/directoryなど)にあるすべてのファイルを保存します
-list: アプリケーションのワークスペースまたはコンポーネントにある変更されたすべてのアプリケーションをリストします
-changesSince: 日付パラメータ(yyyy-mm-dd)が必要です。-listの値を指定された日付以降の変更に制限します
-changesBy: 文字列パラメータが必要です。-listの値を指定されたユーザーによる変更に制限します
-expComponents: アプリケーション・コンポーネントをエクスポートします。残りのパラメータはすべて、TYPE:IDという形式にする必要があります
-debug: デバッグ出力を印刷します
-nochecksum: コンテンツが変更されていない場合でも、既存のファイルを上書きします
-split: アプリケーションを複数のファイルに分割します
SQL> apex export -applicationid 100 -list -changesSince 2021-02-09
2021-02-09 10:11 BREADCRUMB:2833396906901945 Breadcrumb
2021-02-09 10:11 BREADCRUMB_ENTRY:3130962713923428 Breadcrumb: 動的コンテンツ (2)
2021-02-09 10:11 LIST:2833809654901965 デスクトップ・ナビゲーション・メニュー
2021-02-09 10:16 PAGE:2 2. 動的コンテンツ
Date ID Name
---------------- --------------------------------------- -----------------------
SQL>
SQL> apex export -applicationid 100 -expComponents SHORTCUT:2976483336902675
Exporting Application 100
SQL>