繁体   English   中英

使用Java将数据从Google Cloud Storage加载到BigQuery

[英]Load data from Google Cloud Storage to BigQuery using Java

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

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

我不知道有任何用于将表格从Google Cloud Storage加载到BigQuery的Java示例。 也就是说,如果您按照这里运行查询作业的说明进行操作,则可以使用以下命令运行加载作业:

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM