проблема при перезапуске таблиц и вставке данных в bigquery с использованием узла API - PullRequest
0 голосов
/ 21 февраля 2019

У меня неожиданное поведение при загрузке данных в BigQuery сразу после создания схемы.
Я использую Node API для вставки данных с BigQuery потоковым API.
Для сброса удаляемых данныхи создавать таблицы перед загрузкой любых данных.

Моя проблема: в первый раз все работает нормально, но если я выполню его снова, это не удастся.

Процесс всегда удаляет и создает схему таблицы, но не вставляет данные, пока я не ждумомент, чтобы выполнить это снова.

Этот код воспроизводит регистр:

async function loadDataIntoBigquery() {
const {BigQuery} = require('@google-cloud/bigquery')
const tableName = "users"
const dataset = "data_analisis"
const schemaUsers = "name:string,date:string,type:string"
const userData = [{name: "John", date: "20/08/93", type: "reader"}, {
    name: "Marie",
    date: "20/08/90",
    type: "owner"
}]

try {
    const bigquery = new BigQuery()
    await bigquery.createDataset(dataset).then(err => console.log("dataset created successfully")).catch(err => {
        console.log("warn: maybe the dataset already exists")
    })
    await bigquery.dataset(dataset).table(tableName).delete().then(err => console.log("table deleted successfully")).catch((err) => {
        console.log("Error: maybe the table does not exist")
    })
    await bigquery.dataset(dataset).createTable(tableName, {schema: schemaUsers}).then(() => console.log("table created successfully")).catch(err => console.log("Error: maybe the table already exists"))
    await bigquery.dataset(dataset).table(tableName).insert(userData).then((data) => console.log("Ok inserted ", data)).catch(err => console.log("Error: can't insert "))
} catch (err) {
    console.log("err", err)
}

}

, чтобы проверить, что данные были вставлены. Я использую этот запрос

select * from `data_analisis.users` 

1 Ответ

0 голосов
/ 26 февраля 2019

У меня та же проблема.В качестве обходного пути вместо этого я вставляю данные с запросом:

const query = "INSERT INTO `"+dataset+"."+tableName"` (name, date, type ) VALUES  ("+name+",'"+date+"','"+type+"')";
await bigQuery.query({
    query: query,
    useLegacySql: false,
    location: 'EU'
}, (err) => {
    console.log("Insertion error : ",err);
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...