Skip to content

データローダWebAPI・データ追加

loaderwebapi.init_record で取得したjsonを元に、穴埋めしたレコードデータを実際に保存します。

エンドポイント

https://pf.xdata.nict.jp/api/v1/dataloaderapi/jsonrpc

制限事項

一度のリクエストで送信できるデータ量は100MBまでとなります。送信時のリクエストボディが100MB未満になるように調整してください。

リクエスト例1

下記は loaderwebapi.register_loader を使って test_event_1 という名前で data_nameを定義した場合のリクエストになります。

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "loaderwebapi.add_record",
  "params": {
    "data_name": "test_event_001",
    "options": {"if_exists": "override"},
    "record_set": [
       {
        "type": "Feature",
        "geometry": {"type": "Point", "coordinates": [130, 31]},
        "properties": {
          "start_datetime": "2021-01-01 00:00:00+09",
          "end_datetime": "2021-01-01 01:00:00+09",
          "test_varchar_1": "testvalue_1"
        }
      },
      {
        "type": "Feature",
        "geometry": {"type": "Point", "coordinates": [130, 31]},
        "properties": {
          "start_datetime": "2021-01-01 01:00:00+09",
          "end_datetime": "2021-01-01 02:00:00+09",
          "test_varchar_1": "testvalue_2"
        },
      }
    ]
  }
}

レスポンス例1

下記はリクエスト例1の返却内容になります。

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "count": 2,
    "count_duplicate": 0,
    "count_insert": 2,
    "count_update": 0,
    "count_upload": 2,
    "message": "Of the 2 records uploaded, 0 were overwritten and 2 were inserted."
  }
}

リクエスト例2

下記は loaderwebapi.register_loader を使って test_event_1 という名前で data_nameを定義し、ファイルを保存する場合のリクエスト内容になります。

loaderwebapi.register_loader で定義した file 属性中、下記で指定した値を record_def 直下のキーとして指定する必要があります。

  • file_name_column
    • サンプル中では file_name
  • file_type_column
    • サンプル中では file_type
  • file_prefixid_column
    • サンプル中では file_prefixid
  • file_pathid_column
    • サンプル中では file_pathid
  • file_relativepath_property
    • サンプル中では relative_path

また、file 属性として指定したキーでは実際のファイルの内容をbase64化した文字列として指定します。サンプル中では冒頭の数バイトのみを掲載して省略しましたが、test_file_1 が該当します。

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "loaderwebapi.add_record",
  "params": {
    "data_name": "test_event_1",
    "options": {
      "if_exists": "override"
    },
    "record_set": [
      {
        "geometry": {
          "type": "Point",
          "coordinates": [
            130,
            31
          ]
        },
        "properties": {
          "start_datetime": "2021-01-01 00:00:01+09",
          "end_datetime": "2021-01-01 00:00:05+09",
          "relative_path": "test_event_1_directory",
          "file_prefixid": 1,
          "file_pathid": "test_event_1_path_id",
          "file_type": "image/png",
          "file_name": "myfile.png",
          "test_file_1": "iVBO....",
          "test_varchar_1": "foobar_varchar"
        },
        "type": "Feature"
      }
    ]
  }
}

レスポンス例2

下記はリクエスト例2の返却内容になります。

{
  "id": 1,
  "jsonrpc": "2.0",
  "result": {
    "count": 2,
    "count_duplicate": 0,
    "count_insert": 1,
    "count_update": 0,
    "count_upload": 1,
    "message": "Of the 1 records uploaded, 0 were overwritten and 1 were inserted."
  }
}

パラメータ

JSON-RPCリクエスト内容のうち、params 内に指定可能なものを下記に表示します。

  • data_name: string
  • record_set: array

    • init_record が返した GeoJson の features の各要素の geometry と properties に値がセットされた物を渡す。
    • properties の key 集合が挿入先のデータ構造に合っていればよく, init_record の実行と対応が取れている必要はない。
    • また、register_record 時に need_crypto を使って暗号化を指定した場合でも特に暗号化に関する変換などを意識せず、そのまま文字列として値を渡すこと。

    • filebytearaster 型属性の値は properties の value にbase64 エンコードした文字列を設定する。

    • 日付属性の値は文字列で渡す。文字列の書式は ISO8601 に準拠すること。
  • options: データ挿入時の動作を指定する連想配列。

    • if_exists: override, skip, error のいずれかを指定
    • 一意キーに相当する属性 (start_datetime,end_datetime,location等の組み合わせ) が一致するデータが既に登録されていた場合の振る舞いを規定する。
    • override は上書き更新、skip の場合は該当行のみを登録しない.error は全ての行を登録しない。

戻り値

  • count: アップロード行数
  • count_upload: アップロード行数
  • count_duplicate: 既存テーブルとの重複行
  • count_insert: INSERT行数
  • count_update: UPDATE行数
  • message: 処理結果メッセージ