从查询结果中创建表格?

时间:2013-12-08 15:17:28

标签: google-bigquery

我正在使用Bigquery的Java API。我正在运行一个选择查询,并希望将结果保存到目标表。

我已经设置了loadConfig.setDestinationTable(),但我得到“加载配置必须至少指定一个源URI”。

你能解释一下我做错了什么吗?

3 个答案:

答案 0 :(得分:2)

您不希望设置loadConfig目标表,而是设置queryConfig.setDestinationTable()(因为这不是加载作业 - 它是查询作业)。正如Fh所说,如果你分享你正在使用的代码,我们可以提供更详细的帮助。

答案 1 :(得分:1)

这是我用来执行此操作的代码:

    public static String copyTable(String project, String dataSet, String table) {

        String newTableName = table + "_copy_"+System.currentTimeMillis();;
        try {
            Job copyJob = new Job();

            TableReference source = new TableReference();
            source.setProjectId(project);
            source.setDatasetId(dataSet);
            source.setTableId(table);
            TableReference destination = new TableReference();
            destination.setProjectId(project);
            destination.setDatasetId(dataSet);
            destination.setTableId(newTableName);

            JobConfiguration configuration = new JobConfiguration();
            JobConfigurationTableCopy copyConf = new JobConfigurationTableCopy();
            copyConf.setSourceTable(source);
            copyConf.setDestinationTable(destination);

            configuration.setCopy(copyConf);
            copyJob.setConfiguration(configuration);

            bigquery.jobs().insert(project, copyJob).execute();
            return newTableName;
        } catch (Exception e) {
            e.printStackTrace();
            logger.warn("unable to copy table :" + project + "."
                    + dataSet + "." + table, e);
            throw new RuntimeException(e);
        }
    }

如果您还有其他问题,请与我联系

答案 2 :(得分:0)

假设您正在运行交互式异步查询,您实际上希望在一个请求正文中传递查询,目标projectId,目标dataSetId和目标tableId。请参阅此处的Java API示例:https://developers.google.com/bigquery/querying-data#asyncqueries