JSONデータを読み取り、データベースに挿入する

JSONデータを読み取り、データベースに挿入する

Goanywhere2022.11.21

JSONファイルのデータをデータベースにインポート

GoAnywhere MFTは、JSONおよびその他のデータ形式を転送または操作するためのRESTful Webサービスに接続できます。
このチュートリアルでは、GoAnywhere Managed File Transferを使用してJSONファイルからデータを読み取り、Read JSONタスクを使用してそのデータを行セット変数に読み込む方法を学習します。これらの行セットを使用して、データをデータベースに挿入したり、XML、Excel、固定幅、CSVなどの別のファイルタイプに変換することも可能です。

JSON

JSONはJavaScript Object Notationの略です。JSONは、論理的で整理された、アクセスしやすい方法で表されます。JSONファイルには、GoAnywhere MFTで解析できる複数レベルのオブジェクト、配列、およびさまざまなフィールドデータを含めることができます。GoAnywhereがJSONファイルを読み取るとき、ファイルの内容はレコードのリストを含む1つ以上の行セット変数に保存されます。
たとえば、顧客情報と顧客が注文した製品のリストを含むJSONファイルを作成できます。顧客情報は1つの行セットに解析され、製品のリストは別の行セットに解析されます。これらの行セット変数は、2つの個別のデータベーステーブルに挿入したり、CSV、Excel、XMLなどの別の形式に書き込むことが可能です。
次の画像は単純なJSON入力ファイルを表しており、このチュートリアル全体で参照されます。

JSONファイルの例

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

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

JSONタスクの読み取り

Read JSONタスクで、ファイル属性の値を指定します。
  • 入力ファイル –読み取るJSONファイルのファイルパスとファイル名。
  • 入力ファイルセット -オプションで、読み込むファイルのリストを含むファイルセットを定義できます。

JSONタスク属性を読み取る

[追加する]ボタンをクリックし、[行セット]を選択します。

新しい行セットを追加

行セット要素で、変数名属性の値を指定します。
  • 変数名 –解析されたデータを含む変数の名前。行セット変数は、注文情報を保存するために使用されます。

行セット要素の変数名

[追加する]ボタンをクリックし、[カラム]を選択します。

列を追加

カラム要素で、次の属性の値を指定します。
  • 索引 –出力行セットの列のインデックス。最初の列はインデックス1で始まります。
  • -この列がデータを描画するフィールドへのパス。フィールドからデータを取得するには、「/Object/Array/Field」のようにパスを定義する必要があります。たとえば、上記の例から注文番号を取得するには、「/orders/orderno」を使用します。顧客IDを取得するには、「/orders/customer/custid」を使用します。

列要素の属性

前の2つの手順を繰り返して、残りの注文情報の列を追加します。
JSONファイルから顧客情報を保存するために、2番目の行セット変数を作成します。

JSONファイル配列の例

プロジェクト概要からRead JSONタスクを選択し、[追加する]ボタンをクリックして[行セット]を選択し、別の行セット変数を追加します。行セット要素で、変数名属性の値を指定します。

行セット要素の変数名

[追加する]ボタンをクリックし、[カラム]を選択します。カラム要素で、索引属性と値属性の値を指定します。

列要素の属性

クリックして[追加する]サブメニューのボタンを選択し、同じ追加。最後の2つの手順を繰り返して、JSONファイルから列と要素を追加します。
次の画像は、JSONファイルから読み取られた列と要素の2つの行セット変数を含むRead JSONタスクのプロジェクト概要を示しています。

JSONプロジェクトの概要

出力例

Read JSONタスクから収集したデータをデータベースに変換するには、コンポーネントライブラリのデータベースフォルダーを展開し、SQLタスクをプロジェクト概要にドラッグします。

SQLタスク

SQLタスクで、次の属性の値を指定します。
  • データベースサーバ –ドロップダウンリストから事前に構成されたデータベースサーバーを選択します。

SQLタスク属性

[クエリを追加]ボタンをクリックして、クエリをSQLタスクに追加します。

クエリを追加

ページにSQL Insertステートメントを入力します。この例では、テーブル名は「orders」で、4つのプレースホルダーは「?」です。'orders'入力行セットで参照されるインデックスに使用されます。

SQL文

行セット変数名 '${orders}'を入力行セット変数フィールドに指定します。指定されたSQLステートメントは、この行セットの各行ごとに1回実行されます。 ${customer} 行セット変数に含まれるデータをデータベースに挿入するには、[追加]ボタンと[同じものを追加]をクリックして2番目のクエリを追加します。${customer} 行セット変数には7つのインデックス、7つのプレースホルダー「?」が含まれているため 使用されています。

SQL文

次の図は、最終的なプロジェクト概要を示しています。

最終プロジェクト概要

実行されると、プロジェクトはJSONファイルからデータを読み取り、Read JSONタスクを使用してそのデータを行セット変数として読み取ります。次に、これらの行セットを使用して、SQLタスクを使用して2つの個別のデータベーステーブルにデータを挿入します。

この処理を自動化する

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