首页 > 解决方案 > 使用nodejs从avro上传到bigquery中删除root

问题描述

刚开始使用 bigquery 并试图找到将 db 表上传到 bq 的最佳方法。我们一直在使用 avsc 库将表格内容转换为 avro,因为从所有文档看来,avro 是加载它的最快方式,但它向架构添加了一个根元素,因此所有列都是 root.name,root .time 等。我从 2016 年在这里看到了另一篇关于此的帖子,解决方案是使用临时表并像这样剥离根目录, bq query --external_table_definition=foo::AVRO=gs://your_bucket/path/file.avro* --destination_table your_dataset.your_table "SELECT root.* FROM foo" 但 nodejs 库只有完成永久表的指令,而不是临时表。即使我想创建一个永久表,我也不能,因为由于“根”,它将所有列放在一行中,并且数据量超过了单行中允许的数量。如何将数据加载到 bigquery?

标签: google-bigquery

解决方案


您可以使用 bq js 库 [1] 创建一个外部表,您需要适当地设置选项对象 [2]

[1] https://github.com/googleapis/nodejs-bigquery/blob/master/samples/createTable.js

[2] https://stackoverflow.com/a/42916251/5873699


推荐阅读