如何在 Bigquery 中使用带有列号引用的 insert All 插入数据?
How to insert data using insertAll with column number reference in Big Query?
我正在使用流式插入函数 insertAll() 将数据插入到我的大查询中 table。
我正在使用地图和列表,如 BQ 文档中的 Java 代码示例所示 - bq docs link
Map<String, Object> row = new HashMap<>();
List<InsertAllRequest.RowToInsert> rowContent = new ArrayList<>();
地图 row
包含一行每一列的数据,在读取整行后,我将其添加到 rowContent
。后来我将它传递给 insertAll()
函数,该函数采用如下声明的可迭代对象:
Iterable<InsertAllRequest.RowToInsert> rows
现在我的主要问题是:
我通过引用 BQ 列名称将一行的每一列添加到地图中,例如:
row.put("columnName", value)
有没有办法使用列号而不是名称?
例如:
row.put(0, value0)
row.put(1, value1)
row.put(2, value2)
AFAIK,它不是 orderedMap,我会说不。但是,你可以作弊。
使用列名数组
// Init
String[] columnNames = new String[3];
columnNames[0] = "Column1";
columnNames[1] = "Column2";
columnNames[2] = "Column3";
然后,在您的 put
中执行此操作
row.put(columnNames[0], value0)
row.put(columnNames[1], value1)
row.put(columnNames[2], value2)
您甚至可以想象通过在开始流式传输之前读取 table 元数据来动态创建 columnNames
数组。
我正在使用流式插入函数 insertAll() 将数据插入到我的大查询中 table。
我正在使用地图和列表,如 BQ 文档中的 Java 代码示例所示 - bq docs link
Map<String, Object> row = new HashMap<>();
List<InsertAllRequest.RowToInsert> rowContent = new ArrayList<>();
地图 row
包含一行每一列的数据,在读取整行后,我将其添加到 rowContent
。后来我将它传递给 insertAll()
函数,该函数采用如下声明的可迭代对象:
Iterable<InsertAllRequest.RowToInsert> rows
现在我的主要问题是:
我通过引用 BQ 列名称将一行的每一列添加到地图中,例如:
row.put("columnName", value)
有没有办法使用列号而不是名称?
例如:
row.put(0, value0)
row.put(1, value1)
row.put(2, value2)
AFAIK,它不是 orderedMap,我会说不。但是,你可以作弊。
使用列名数组
// Init
String[] columnNames = new String[3];
columnNames[0] = "Column1";
columnNames[1] = "Column2";
columnNames[2] = "Column3";
然后,在您的 put
中执行此操作
row.put(columnNames[0], value0)
row.put(columnNames[1], value1)
row.put(columnNames[2], value2)
您甚至可以想象通过在开始流式传输之前读取 table 元数据来动态创建 columnNames
数组。