// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();
async function insertingDataTypes() {
// Inserts data of various BigQuery-supported types into a table.
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// const datasetId = 'my_dataset';
// const tableId = 'my_table';
// Describe the schema of the table
// For more information on supported data types, see
// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types
const schema = [
{
name: 'name',
type: 'STRING',
},
{
name: 'age',
type: 'INTEGER',
},
{
name: 'school',
type: 'BYTES',
},
{
name: 'metadata',
type: 'JSON',
},
{
name: 'location',
type: 'GEOGRAPHY',
},
{
name: 'measurements',
mode: 'REPEATED',
type: 'FLOAT',
},
{
name: 'datesTimes',
type: 'RECORD',
fields: [
{
name: 'day',
type: 'DATE',
},
{
name: 'firstTime',
type: 'DATETIME',
},
{
name: 'secondTime',
type: 'TIME',
},
{
name: 'thirdTime',
type: 'TIMESTAMP',
},
],
},
];
// For all options, see https://cloud.google.com/bigquery/docs/reference/v2/tables#resource
const options = {
schema: schema,
};
// Create a new table in the dataset
const [table] = await bigquery
.dataset(datasetId)
.createTable(tableId, options);
console.log(`Table ${table.id} created.`);
// The DATE type represents a logical calendar date, independent of time zone.
// A DATE value does not represent a specific 24-hour time period.
// Rather, a given DATE value represents a different 24-hour period when
// interpreted in different time zones, and may represent a shorter or longer
// day during Daylight Savings Time transitions.
const bqDate = bigquery.date('2019-1-12');
// A DATETIME object represents a date and time, as they might be
// displayed on a calendar or clock, independent of time zone.
const bqDatetime = bigquery.datetime('2019-02-17 11:24:00.000');
// A TIME object represents a time, as might be displayed on a watch,
// independent of a specific date and timezone.
const bqTime = bigquery.time('14:00:00');
// A TIMESTAMP object represents an absolute point in time,
// independent of any time zone or convention such as Daylight
// Savings Time with microsecond precision.
const bqTimestamp = bigquery.timestamp('2020-04-27T18:07:25.356Z');
const bqGeography = bigquery.geography('POINT(1 2)');
const schoolBuffer = Buffer.from('Test University');
// a JSON field needs to be converted to a string
const metadata = JSON.stringify({
owner: 'John Doe',
contact: 'johndoe@example.com',
});
// Rows to be inserted into table
const rows = [
{
name: 'Tom',
age: '30',
location: bqGeography,
school: schoolBuffer,
metadata: metadata,
measurements: [50.05, 100.5],
datesTimes: {
day: bqDate,
firstTime: bqDatetime,
secondTime: bqTime,
thirdTime: bqTimestamp,
},
},
{
name: 'Ada',
age: '35',
measurements: [30.08, 121.7],
},
];
// Insert data into table
await bigquery.dataset(datasetId).table(tableId).insert(rows);
console.log(`Inserted ${rows.length} rows`);
}