package com.google.cloud.bigquery.samples;
import com.google.api.services.bigquery.Bigquery;
import com.google.api.services.bigquery.Bigquery.Jobs.GetQueryResults;
import com.google.api.services.bigquery.model.GetQueryResultsResponse;
import com.google.api.services.bigquery.model.QueryRequest;
import com.google.api.services.bigquery.model.QueryResponse;
import java.io.IOException;
import java.util.Iterator;
import java.util.Scanner;
/**
* TODO: Insert description here. (generated by elibixby)
*/
public class SyncQuerySample extends BigqueryUtils{
//[START main]
/**
* @param args
* @throws IOException
*/
public static void main(String[] args)
throws IOException{
Scanner scanner = new Scanner(System.in);
System.out.println("Enter your project id: ");
String projectId = scanner.nextLine();
System.out.println("Enter your query string: ");
String queryString = scanner.nextLine();
System.out.println("Enter how long to wait for the query to complete (in milliseconds):\n " +
"(if longer than 10 seconds, use an asynchronous query)");
long waitTime = scanner.nextLong();
scanner.close();
Iterator<GetQueryResultsResponse> pages = run(projectId, queryString, waitTime);
while(pages.hasNext()){
printRows(pages.next().getRows(), System.out);
}
}
// [END main]
// [START run]
public static Iterator<GetQueryResultsResponse> run(String projectId,
String queryString,
long waitTime) throws IOException{
Bigquery bigquery = BigqueryServiceFactory.getService();
//Wait until query is done with 10 second timeout, at most 5 retries on error
QueryResponse query = bigquery.jobs().query(
projectId,
new QueryRequest().setTimeoutMs(waitTime).setQuery(queryString)).execute();
//Make a request to get the results of the query
//(timeout is zero since job should be complete)
GetQueryResults getRequest = bigquery.jobs().getQueryResults(
query.getJobReference().getProjectId(),
query.getJobReference().getJobId());
return getPages(getRequest);
}
// [END run]
}