データベースを照会してデータをJSONに書き込む

データベースを照会してデータをJSONに書き込む

Goanywhere2022.09.30

GoAnywhere MFTは、JSONおよびその他のデータ形式を転送または操作するためのRESTful Webサービスに接続できます。
このチュートリアルでは、2つのデータベーステーブルをクエリし、条件式を使用してデータを結合し、データをJSONファイルに書き込む方法を学習します。その後、このファイルを他のシステムにインポートしたり、RESTを介してデータをWebサービス呼び出しにポストしたりできます。

JSON

JSONはJavaScript Object Notationの略です。JSONは、論理的で整理された、アクセスしやすい方法で表されます。JSONファイルには、GoAnywhere MFTで解析できる複数レベルのオブジェクト、配列、およびさまざまなフィールドデータを含めることができます。

プロジェクトデザイナーのSQLタスクの使用

[プロジェクトデザイナー]ページから、コンポーネントライブラリの [データベース]フォルダーを展開し、[SQL]タスクをプロジェクト概要にドラッグします。

SQLタスクで、ドロップダウンリストからデータベースサーバリソースを選択します。

[追加する]ボタンをクリックし、クエリをSQLタスクに追加します。注文データベーステーブルに対して最初にクエリを作成します。

SQL StatementフィールドにSelectステートメントを入力します。または、SQLウィザードを使用して、Selectステートメントをすばやく構築できます。
SQLウィザードでは、スキーマ(ライブラリ)、テーブル(物理ファイル)、列(フィールド)、列見出し、 "where"句、および "order by"句を選択できます。
SELECTステートメントを作成するためのSQLウィザードにアクセスするには、SQLステートメントフィールドの右側にある参照アイコンをクリックします。

次の表は、「orders」という名前の行セット変数に含まれるデータを示しています。
${orders[1]}などのインデックス表記で表される変数は、後続の手順でJSONフィールドデータに入力するために使用されます。

SQLタスクに戻り、顧客データベーステーブルの2番目のクエリを追加します。

次の表は、「customers」という名前の行セット変数に含まれるデータを示しています。

プロジェクトデザイナーのSQLタスクの使用

[プロジェクトデザイナー]ページ内から、コンポーネントライブラリの [データ変換]フォルダーを展開し、[Write JSON]タスクをプロジェクト概要にドラッグします。

Write JSONタスクで、次のフィールドを指定します。
  • 出力ファイル - 書き込むJSONファイルのファイルパスとファイル名。
  • きちんとした出力 –「true」に設定すると、JSONファイルはオブジェクト、配列、フィールド間の標準的なインデントで定義されます。

[Write JSON]タスクウィンドウで、サブメニューの[追加する]ボタンをクリックし、[対象]を選択します。

Object要素で、次の属性の値を指定します。
  • - このオブジェクトの名前を指定します。これがオブジェクトの子ではない場合、名前はプロジェクト概要内の参照として使用されます。このオブジェクトが別のオブジェクトの子として定義されている場合、名前はJSONファイルのフィールド名として使用されます。この例では、このオブジェクトは別のオブジェクトの子ではないため、[名]フィールドの値はプロジェクト概要の参照としてのみ使用され、JSONファイルでは使用されません。プロジェクト概要でこのオブジェクトの始まりを識別しやすくするために、要素に「{」が指定されています。ユーザーには、出力に「}」が自動的に挿入されます。
参照用の最終的なJSONファイルの出力は次のとおりです。

Object要素で、サブメニューの[追加する]ボタンをクリックし、[アレイ]を選択します。Array要素は、行セット変数の各行を反復処理します。JSONの用語では、配列は[…]構造をデータに追加します。
配列要素で、入力行セット変数を指定します。
  • - この配列はオブジェクトの子であり、JSONファイル内のフィールドラベルとして使用されます。JSON出力の最初の配列には、「orders」データベーステーブルのデータが含まれるため、この配列に「orders」という名前を付けます。
  • 入力行セット変数 - ファイルに書き込む行セットデータを含む変数の名前。たとえば、SQLタスクでは、出力変数として注文を使用したため、ここで入力として${orders}が使用されます。

この配列には複数のオブジェクトが含まれます。Array要素で、サブメニューの[追加する]ボタンをクリックし、[対象]を選択します。
Object要素で、名前を指定します。この例では、プロジェクト概要でこのオブジェクトの始まりを識別しやすくするために、要素に「{」が指定されています。

Object要素で、サブメニューの[追加する]ボタンをクリックし、[フィールド]を選択します。
Field要素で、次のフィールドを指定します。
  • - 出力JSONファイルに表示されるフィールド名を指定します。
  • - このフィールドの値を指定します。これは、定数値と行セット列参照の組み合わせで表現できます。たとえば、${orders[1]}の場合、orderは行セット変数の名前で、[1]は列のインデックスです。親配列で使用されている行セットのみを使用できます。

必要に応じて、サブメニュー内の[追加する]をクリックし、[同じを追加]を選択してフィールドを追加します。上記と同じプロセスに従い、出力ファイルに表示されるフィールド名と行セット変数の適切な列インデックスを指定します。
終了したら、[保存]ボタンをクリックします。次の画像は、これまでのプロジェクトの概要を示しています。

${customers}行セット変数のデータを使用して2番目の配列を構築するプロセスは同じです。
次数配列のオブジェクト要素を選択します。[追加する]ボタンをクリックし、[アレイ]を選択します。この配列に「customers」という名前を付け、入力行セット変数フィールドで${customers}を指定します。

顧客フィールドを含むオブジェクトを追加します。顧客配列を選択し、[追加する]ボタンをクリックして、[対象]を選択します。「custid」を修飾子として使用して両方のテーブルのデータを結合するには、新しいObject要素に条件式を追加します。

${customers}行セット変数からのデータを使用して顧客配列にフィールドを追加する場合は、前述の同じプロセスに従います。

次の画像は、JSONの書き込みタスクから作成されたJSONファイルを示しています。

この処理を自動化する

この例では、データベーステーブルのデータを読み込み、JSONファイルに書き出しする方法を示しましたが、このプロジェクトを拡張し、スケジュールに基づいて自動的に実行したり、トリガーを介して呼び出したり、既存のプロセスに統合することができます。