我正在使用Bigquery的Java API。我正在運行一個選擇查詢並希望將結果保存到目標表中。從查詢結果中創建表?
我已經設置了loadConfig.setDestinationTable(),但我得到「負載配置必須指定至少一個源URI」。
請問您能解釋我做錯了什麼?
我正在使用Bigquery的Java API。我正在運行一個選擇查詢並希望將結果保存到目標表中。從查詢結果中創建表?
我已經設置了loadConfig.setDestinationTable(),但我得到「負載配置必須指定至少一個源URI」。
請問您能解釋我做錯了什麼?
您不想設置loadConfig目標表,而是改爲queryConfig.setDestinationTable()(因爲這不是加載作業 - 它是查詢作業) 。正如Fh所說,如果您分享您使用的代碼,我們可以提供更詳細的幫助。
就是這樣。我正在設置錯誤的目的地表。 –
假設您正在運行交互式異步查詢,您基本上想要在一個請求正文中傳遞查詢,目標projectId,目標dataSetId和目標tableId。請參閱此處的Java API示例:https://developers.google.com/bigquery/querying-data#asyncqueries
這是我使用這樣做代碼:
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);
}
}
,如果您有任何疑問
你可以發表你的完整的代碼請與我聯繫?那麼我會嘗試重現 –
你應該接受幫助你的答案@FebianShah –