// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. 'use strict'; function main(datasetId = 'my_dataset', tableId = 'my_table') { // [START bigquery_inserting_data_types] // 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`); } // [END bigquery_inserting_data_types] insertingDataTypes(); } main(...process.argv.slice(2));