【问题标题】:Creating a table within a dataset in BigQuery programmatically以编程方式在 BigQuery 的数据集中创建表
【发布时间】:2017-08-05 20:14:52
【问题描述】:

是否可以使用 Java 中的 API 在 BigQuery 的数据集中创建表?我知道这是可能的

bq mk --schema <fileName> -t <project>:<dataset>.<table> 

但我找不到以编程方式执行此操作的方法。

【问题讨论】:

    标签: java api google-bigquery


    【解决方案1】:

    我没有亲自使用过 Java BigQuery 库1,但看起来您应该调用 BigQuery.create(TableInfo, TableOptions[]。该文档有这个示例代码 - 当然假设您已经有一个 BigQuery 接口实现的实例:

    String datasetName = "my_dataset_name";
    String tableName = "my_table_name";
    String fieldName = "string_field";
    TableId tableId = TableId.of(datasetName, tableName);
    // Table field definition
    Field field = Field.of(fieldName, Field.Type.string());
    // Table schema definition
    Schema schema = Schema.of(field);
    TableDefinition tableDefinition = StandardTableDefinition.of(schema);
    TableInfo tableInfo = TableInfo.newBuilder(tableId, tableDefinition).build();
    Table table = bigquery.create(tableInfo);
    

    显然,对于 real 表,您的架构构造可能会涉及更多,但这应该可以帮助您入门。我看不到从文件中加载模式的任何方式,但是如果您的模式文件以简单的方式(例如 JSON)是机器可读的,那么您可能很容易编写自己的解析器。 (如果您愿意,也可以将其贡献给项目......)


    1我是 C# BigQuery 库的主要作者,所以我知道要寻找什么。

    【讨论】:

    • 感谢您的回答。好吧,我实际上是在寻找一种直接从模式创建表的方法,而不是加载它并迭代。这是一个有用的建议,再次感谢。
    • @EduardoSanchez-Ros:当您说“直接来自架构”时,您的意思是来自文件?如果是这样,这是一个有点不同的问题,但我不认为它特别难做到。 (就我个人而言,我通常只是将模式硬编码在代码中,而不是将其放在单独的文件中,但这是另一回事。)
    • 是的,我就是这个意思。正如你所说,我可以编写自己的解析器并从模式文件中创建表。我会很高兴在 API 中拥有这种能力:)。谢谢@Jon Skeet
    • @EduardoSanchez-Ros:我建议您在 repo 上提交功能请求:github.com/GoogleCloudPlatform/google-cloud-java
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-05
    • 1970-01-01
    • 1970-01-01
    • 2017-03-01
    • 2017-04-07
    相关资源
    最近更新 更多