Google BigQuery将数据批量加载到表中

时间:2017-03-09 10:32:37

标签: csv google-bigquery google-cloud-storage

我认为我想做的事情目前是不可行的,但想澄清一下。

我有一个存储桶说bucketA,其中包含向公众提供的文件,还有一个存储桶说bucketB,其中bucketA的访问日志以特定的CSV格式存储

我想要做的是对这些访问日志运行SQL查询。我遇到的问题是日志存储在不同的CSV中(我认为每小时一个)。我试图通过BigQuery UI界面导入它们,但似乎有一对一的CSV到表映射。当您在放置gs://<bucket_name>/<path_to_input_file>时将占位符和文档定义到输入位置。

基于以上我的问题是:是否可以将存储桶中的所有文件上传到单个BigQuery表中,类似于&#34; *&#34;星号运算符?

构建表后,当有更多带有数据的文件存储在存储桶中时会发生什么?我是否需要重新运行,是否有调度程序?

2 个答案:

答案 0 :(得分:1)

  

基于以上我的问题是:是否可以上传全部   存储桶中的文件到单个BigQuery表,类似于   “*”星号运算符?

您可以直接在GCS(联合来源)中查询加载,然后在两种情况下都使用*将其全部放入原生表格中:

enter image description here

enter image description here

enter image description here

  

构建表后,当有更多带有数据的文件存储在存储桶中时会发生什么?我是否需要重新运行,是否有调度程序?

如果您将其保留为en external表,那么每次查询BigQuery都会扫描所有文件,因此您将获得新文件/数据。如果将其作为本机表加载,则需要自己安排作业以将每个新文件附加到表中。

答案 1 :(得分:0)

使用BigQuery网络用户界面,然后使用标准的上载csv方法创建新表和一些初始数据。

要进行快速测试,如何使用BigQuery网络用户界面在现有表中插入更多新数据?

我意识到我无法在查询编辑器文本框中复制和粘贴多个插入语句。

INSERT INTO dataset.myschema VALUES ('new value1', 'more value1');
INSERT INTO dataset.myschema VALUES ('new value2', 'more value2');

哇,那么将新数据行1插入1会很麻烦。

幸运的是BigQuery支持INSERT statements that use VALUES syntax can insert multiple rows

INSERT INTO dataset.myschema VALUES ('new value1', 'more value1'),
('new value2', 'more value2');