我需要创建一个与Bigquery一起使用的存储库,所以当我尝试进行更新或删除时,我会采用以下异常。
表上不支持UPDATE或DELETE DML语句 使用流缓冲区
此异常仅在我向表中插入内容后发生,并且即使没有插入任何内容,流式缓冲区也会长时间保持打开状态。 是否可以终止它?
更新代码
String query = "UPDATE " + DATASET_NAME + ".Report"
+ " type = 'AAAAAA'"
+ " WHERE id = 1";
QueryRequest queryRequest =
QueryRequest
.newBuilder(query)
.setUseLegacySql(false)
.build();
插入代码
Map<String, Object> content = parsePojoToMap(pojo);
content.put("id", id);
InsertAllRequest.RowToInsert row =
InsertAllRequest.RowToInsert
.of(id, content);
InsertAllRequest insertRequest =
InsertAllRequest
.newBuilder(DATASET_NAME, getType().getSimpleName())
.addRow(row)
.build();
InsertAllResponse response = getInstance().insertAll(insertRequest);
答案 0 :(得分:0)
在具有活动流缓冲区的表上不允许使用DML语句。当一段时间内没有更多数据流传输时,缓冲区将被分离并允许DML。在最后一次流式插入后,通常需要90分钟才能分离流式缓冲区。不幸的是,我没有看到终止它的方法。如果进行批量操作,则没有流缓冲区,您可以立即执行DML操作。