LoginSignup
0
0

[BigQuery API(V2)] JavaでBigQueryテーブルの行(レコード)を挿入する

Posted at

BigQuery API V2(Java)を使用して、
BigQueryテーブルの行(レコード)を挿入する方法
についてご紹介します。

テーブルにレコードを挿入するには、
適切なIAM権限が付与されている必要があります。

権限付与に関しては
⧉[BigQuery API(V2)] JavaでBigQueryを使う(2.権限付与)
を参照ください。

APIを利用する環境の準備から始める場合や、コードを実行する際は、
⧉[BigQuery API(V2)] JavaでBigQueryを使う
を参照ください。

No 目次
1 レコードを挿入
1 スコープ
2 実行
3 レスポンスの内容

1. レコードを挿入

指定したテーブルのレコードを挿入します。

1.1. スコープ

このAPIを実行するには、以下のいずれかのスコープを指定してください。

BigqueryScopes.BIGQUERY
BigqueryScopes.CLOUD_PLATFORM
BigqueryScopes.BIGQUERY_INSERTDATA

⧉[BigQuery API(V2)] JavaでBigQueryを使う(3.2. BigQueryインスタンスを取得)
でスコープを指定してください。

1.2. 実行

public static void main(String[] args) throws Exception{
    Bigquery bigquery = getBigquery();
    Bigquery.Tabledata tabledata = bigquery.tabledata();
    
    Map<String,Object> row = new HashMap<>();
    row.put("field1", "test");
    row.put("field2", 1);
    
    TableDataInsertAllRequest.Rows rows = new TableDataInsertAllRequest.Rows();
    rows.setJson(row);
    
    TableDataInsertAllRequest content = new TableDataInsertAllRequest();
    content.setRows(Arrays.asList(rows));
    
    Bigquery.Tabledata.InsertAll insertAll = tabledata.insertAll("プロジェクトID","データセットID","テーブルID",content);
    
    TableDataInsertAllResponse res = insertAll.execute();
    System.out.println(res);
}

1.2.1. HTTPリクエスト

POST: https://bigquery.googleapis.com/bigquery/v2/projects/{プロジェクトID}/datasets/{データセットID}/tables/{テーブルID}/insertAll
が実行されます。

1.2.2. クエリパラメータ

クエリパラメータはありません。

1.2.3. リクエストボディ

TableDataInsertAllRequestのsetメソッドにより、リクエストボディを追加できます。

メソッド 引数 説明
setSkipInvalidRows Boolean 無効な行が存在する場合でもリクエストのすべての有効な行を挿入するか
setIgnoreUnknownValues Boolean スキーマに一致しない値を含む行も挿入するか
setTemplateSuffix String テンプレートテーブルを使用する場合のインスタンステーブル名
setRows List<TableDataInsertAllRequest.Rows> 挿入する行
setTraceId String リクエストトレースID
デバッグ用途

TableDataInsertAllRequest.Rows

メソッド 引数 説明
setJson Map<String,Object> 単一行のデータ

1.3. レスポンスの内容

TableDataInsertAllResponse

メソッド 戻り値 説明
getKind String リソースの種類
固定文字列:"bigquery#tableDataInsertAllResponse"
getInsertErrors List<TableDataInsertAllResponse.InsertErrors> リクエストの処理中に発生した特定のエラー

TableDataInsertAllResponse.InsertErrors

メソッド 戻り値 説明
getIndex Long エラーが適用される行のインデックス
getErrors List<ErrorProto> Indexプロパティで示された行のエラー情報

ErrorProto

メソッド 戻り値 説明
getReason String エラーコード
getLocation String エラーが発生した場所
getDebugInfo String デバッグ情報
getMessage String エラーの説明


おしまい。。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0