in tools/custom_java_jdbc_client/src/main/java/com/example/BQSimbaExample.java [57:100]
public static void main(String[] args) {
// Parse CLI args
HashMap<String, String> argMap = commandLineArgParser(args);
String query = argMap.get("query"); // eg. "SELECT column1, column2 FROM mydataset.mytable;"
if (query == null) {
throw new IllegalArgumentException("The 'query' command line argument must be provided, eg. `query=SELECT id FROM mydataset.mytable;`");
}
// Get project and dataset values from CLI args, else use defaults configured
String projectId = Objects.requireNonNullElse(argMap.get("projectId"), "my-billing-project");
String additionalDataProjects = Objects.requireNonNullElse(argMap.get("additionalDataProjects"),"my-data-project");
String defaultDataset = Objects.requireNonNullElse(argMap.get("defaultDataset"),"my-dataset");
// Create OAuth config for Application Default Credentials.
// For details on setting up ADC, refer to https://cloud.google.com/docs/authentication/provide-credentials-adc.
OAuthUserConfig oAuthUserConfig = new OAuthUserConfig
.Builder(OAuthUserType.APPLICATION_DEFAULT_CREDENTIALS, projectId)
.build();
// Set configuration options for the query. See the JDBC driver documentation for details (link in README.md).
HashMap<String, String> configOptions = new HashMap<String, String>();
configOptions.put("AdditionalProjects", additionalDataProjects);
configOptions.put("QueryProperties",String.format("dataset_project_id=%s", additionalDataProjects));
configOptions.put("DefaultDataset", defaultDataset);
configOptions.put("FilterTablesOnDefaultDataset", "1");
// Create connection URL containing auth and options to use for the query.
String connectionUrl = generateConnectionUrl(oAuthUserConfig, configOptions);
System.out.println("JDBC connection URL: " + connectionUrl);
// Create the connection, execute the query, and retrieve the results.
try (Connection conn = DriverManager.getConnection(connectionUrl);
Statement stmt = conn.createStatement()) {
System.out.println("Executing query: " + query);
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
// Print the first column of each row.
System.out.println(rs.getString(1));
}
} catch (SQLException e) {
System.err.println("Error connecting to BigQuery: " + e.getMessage());
}
}