3

我想将数据从 Google Cloud Storage 上传到 BigQuery,但找不到任何描述如何执行此操作的 Java 示例代码。有人可以给我一些提示如何做到这一点吗?

我真正想做的是将数据从 Google App Engine 表传输到 BigQuery(并每天同步),以便我可以进行一些分析。我使用 Google App Engine 中的 Google Cloud Storage Service 将(新)记录写入 Google Cloud Storage 中的文件,唯一缺少的部分是将数据附加到 BigQuery 中的表(或为首次写入创建新表)。诚然,我可以使用 BigQuery 浏览器工具手动上传/附加数据,但我希望它是自动的,否则我需要每天手动进行。

4

1 回答 1

5

我不知道任何用于将表从 Google Cloud Storage 加载到 BigQuery 的 java 示例。也就是说,如果您按照此处运行查询作业的说明进行操作,则可以使用以下内容运行 Load 作业:

Job job = new Job();
JobConfiguration config = new JobConfiguration();
JobConfigurationLoad loadConfig = new JobConfigurationLoad();
config.setLoad(loadConfig);

job.setConfiguration(config);

// Set where you are importing from (i.e. the Google Cloud Storage paths).
List<String> sources = new ArrayList<String>();
sources.add("gs://bucket/csv_to_load.csv");
loadConfig.setSourceUris(sources);

// Describe the resulting table you are importing to:
TableReference tableRef = new TableReference();
tableRef.setDatasetId("myDataset");
tableRef.setTableId("myTable");
tableRef.setProjectId(projectId);
loadConfig.setDestinationTable(tableRef);

List<TableFieldSchema> fields = new ArrayList<TableFieldSchema>();
TableFieldSchema fieldFoo = new TableFieldSchema();
fieldFoo.setName("foo");
fieldFoo.setType("string");
TableFieldSchema fieldBar = new TableFieldSchema();
fieldBar.setName("bar");
fieldBar.setType("integer");
fields.add(fieldFoo);
fields.add(fieldBar);
TableSchema schema = new TableSchema();
schema.setFields(fields);
loadConfig.setSchema(schema);

// Also set custom delimiter or header rows to skip here....
// [not shown].

Insert insert = bigquery.jobs().insert(projectId, job);
insert.setProjectId(projectId);
JobReference jobRef =  insert.execute().getJobReference();

// ... see rest of codelab for waiting for job to complete.

有关加载配置对象的更多信息,请参阅此处的 javadoc 。

于 2012-05-21T15:38:07.253 回答