2013-12-08 91 views
0

我正在使用Bigquery的Java API。我正在運行一個選擇查詢並希望將結果保存到目標表中。從查詢結果中創建表?

我已經設置了loadConfig.setDestinationTable(),但我得到「負載配置必須指定至少一個源URI」。

請問您能解釋我做錯了什麼?

+0

你可以發表你的完整的代碼請與我聯繫?那麼我會嘗試重現 –

+0

你應該接受幫助你的答案@FebianShah –

回答

2

您不想設置loadConfig目標表,而是改爲queryConfig.setDestinationTable()(因爲這不是加載作業 - 它是查詢作業) 。正如Fh所說,如果您分享您使用的代碼,我們可以提供更詳細的幫助。

+0

就是這樣。我正在設置錯誤的目的地表。 –

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); 
     } 
    } 

,如果您有任何疑問