use of com.google.cloud.bigquery.Job in project google-cloud-java by GoogleCloudPlatform.
the class ITBigQueryTest method testInsertFromFile.
@Test
public void testInsertFromFile() throws InterruptedException, IOException, TimeoutException {
String destinationTableName = "test_insert_from_file_table";
TableId tableId = TableId.of(DATASET, destinationTableName);
WriteChannelConfiguration configuration = WriteChannelConfiguration.newBuilder(tableId).setFormatOptions(FormatOptions.json()).setCreateDisposition(JobInfo.CreateDisposition.CREATE_IF_NEEDED).setSchema(TABLE_SCHEMA).build();
TableDataWriteChannel channel = bigquery.writer(configuration);
try {
channel.write(ByteBuffer.wrap(JSON_CONTENT.getBytes(StandardCharsets.UTF_8)));
} finally {
channel.close();
}
Job job = channel.getJob().waitFor();
LoadStatistics statistics = job.getStatistics();
assertEquals(1L, statistics.getInputFiles().longValue());
assertEquals(2L, statistics.getOutputRows().longValue());
LoadJobConfiguration jobConfiguration = job.getConfiguration();
assertEquals(TABLE_SCHEMA, jobConfiguration.getSchema());
assertNull(jobConfiguration.getSourceUris());
assertNull(job.getStatus().getError());
Page<List<FieldValue>> rows = bigquery.listTableData(tableId);
int rowCount = 0;
for (List<FieldValue> row : rows.getValues()) {
FieldValue timestampCell = row.get(0);
FieldValue stringCell = row.get(1);
FieldValue integerArrayCell = row.get(2);
FieldValue booleanCell = row.get(3);
FieldValue bytesCell = row.get(4);
FieldValue recordCell = row.get(5);
FieldValue integerCell = row.get(6);
FieldValue floatCell = row.get(7);
assertEquals(FieldValue.Attribute.PRIMITIVE, timestampCell.getAttribute());
assertEquals(FieldValue.Attribute.PRIMITIVE, stringCell.getAttribute());
assertEquals(FieldValue.Attribute.REPEATED, integerArrayCell.getAttribute());
assertEquals(FieldValue.Attribute.PRIMITIVE, booleanCell.getAttribute());
assertEquals(FieldValue.Attribute.PRIMITIVE, bytesCell.getAttribute());
assertEquals(FieldValue.Attribute.RECORD, recordCell.getAttribute());
assertEquals(FieldValue.Attribute.PRIMITIVE, integerCell.getAttribute());
assertEquals(FieldValue.Attribute.PRIMITIVE, floatCell.getAttribute());
assertEquals(1408452095220000L, timestampCell.getTimestampValue());
assertEquals("stringValue", stringCell.getStringValue());
assertEquals(0, integerArrayCell.getRepeatedValue().get(0).getLongValue());
assertEquals(1, integerArrayCell.getRepeatedValue().get(1).getLongValue());
assertEquals(false, booleanCell.getBooleanValue());
assertArrayEquals(BYTES, bytesCell.getBytesValue());
assertEquals(-14182916000000L, recordCell.getRecordValue().get(0).getTimestampValue());
assertTrue(recordCell.getRecordValue().get(1).isNull());
assertEquals(1, recordCell.getRecordValue().get(2).getRepeatedValue().get(0).getLongValue());
assertEquals(0, recordCell.getRecordValue().get(2).getRepeatedValue().get(1).getLongValue());
assertEquals(true, recordCell.getRecordValue().get(3).getBooleanValue());
assertEquals(3, integerCell.getLongValue());
assertEquals(1.2, floatCell.getDoubleValue(), 0.0001);
rowCount++;
}
assertEquals(2, rowCount);
assertTrue(bigquery.delete(DATASET, destinationTableName));
}
use of com.google.cloud.bigquery.Job in project google-cloud-java by GoogleCloudPlatform.
the class BigQuerySnippets method getJobFromId.
/**
* Example of getting a job.
*/
// [TARGET getJob(JobId, JobOption...)]
// [VARIABLE "my_job_name"]
public Job getJobFromId(String jobName) {
// [START getJobFromId]
JobId jobIdObject = JobId.of(jobName);
Job job = bigquery.getJob(jobIdObject);
if (job == null) {
// job was not found
}
// [END getJobFromId]
return job;
}
use of com.google.cloud.bigquery.Job in project google-cloud-java by GoogleCloudPlatform.
the class CreateTableAndLoadData method main.
public static void main(String... args) throws InterruptedException, TimeoutException {
BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
TableId tableId = TableId.of("dataset", "table");
Table table = bigquery.getTable(tableId);
if (table == null) {
System.out.println("Creating table " + tableId);
Field integerField = Field.of("fieldName", Field.Type.integer());
Schema schema = Schema.of(integerField);
table = bigquery.create(TableInfo.of(tableId, StandardTableDefinition.of(schema)));
}
System.out.println("Loading data into table " + tableId);
Job loadJob = table.load(FormatOptions.csv(), "gs://bucket/path");
loadJob = loadJob.waitFor();
if (loadJob.getStatus().getError() != null) {
System.out.println("Job completed with errors");
} else {
System.out.println("Job succeeded");
}
}
use of com.google.cloud.bigquery.Job in project google-cloud-java by GoogleCloudPlatform.
the class BigQuerySnippets method createJob.
/**
* Example of creating a query job.
*/
// [TARGET create(JobInfo, JobOption...)]
// [VARIABLE "SELECT field FROM my_dataset_name.my_table_name"]
public Job createJob(String query) {
// [START createJob]
Job job = null;
JobConfiguration jobConfiguration = QueryJobConfiguration.of(query);
JobInfo jobInfo = JobInfo.of(jobConfiguration);
try {
job = bigquery.create(jobInfo);
} catch (BigQueryException e) {
// the job was not created
}
// [END createJob]
return job;
}
use of com.google.cloud.bigquery.Job in project google-cloud-java by GoogleCloudPlatform.
the class BigQuerySnippets method writeToTable.
/**
* Example of creating a channel with which to write to a table.
*/
// [TARGET writer(WriteChannelConfiguration)]
// [VARIABLE "my_dataset_name"]
// [VARIABLE "my_table_name"]
// [VARIABLE "StringValue1\nStringValue2\n"]
public long writeToTable(String datasetName, String tableName, String csvData) throws IOException, InterruptedException, TimeoutException {
// [START writeToTable]
TableId tableId = TableId.of(datasetName, tableName);
WriteChannelConfiguration writeChannelConfiguration = WriteChannelConfiguration.newBuilder(tableId).setFormatOptions(FormatOptions.csv()).build();
TableDataWriteChannel writer = bigquery.writer(writeChannelConfiguration);
// Write data to writer
try {
writer.write(ByteBuffer.wrap(csvData.getBytes(Charsets.UTF_8)));
} finally {
writer.close();
}
// Get load job
Job job = writer.getJob();
job = job.waitFor();
LoadStatistics stats = job.getStatistics();
return stats.getOutputRows();
// [END writeToTable]
}
Aggregations