データローダ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- データを挿入したいテーブルを指し示す名前。loaderwebapi.register_loaderで指定したものを使う。
-
record_set
: array- init_record が返した GeoJson の features の各要素の geometry と properties に値がセットされた物を渡す。
- properties の key 集合が挿入先のデータ構造に合っていればよく, init_record の実行と対応が取れている必要はない。
-
また、
register_record
時にneed_crypto
を使って暗号化を指定した場合でも特に暗号化に関する変換などを意識せず、そのまま文字列として値を渡すこと。 -
file
、bytea
、raster
型属性の値は 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
: 処理結果メッセージ