我想将BigQuery的查询结果导出到本地文件/ Google存储空间。
我试过'bq extract'命令,但它不允许查询作为输入。
Usage: bq extract <source_table> <destination_uris>
我不想提取整个表,因为该表包含许多不需要的列,我需要聚合数据。
截至目前,我能找到的唯一解决方法是使用'bq query'命令创建一个表,并使用'bq extract'来提取数据。
我正在寻找通过以下方式实现这一目标的更好方法。
bq extract 'select dept_id,sum(sal) from temp.employee
group by dept_id' 'gs://XXXX/employee.csv'
提前致谢
答案 0 :(得分:3)
对于gcloud cli不支持的操作,您始终可以使用bash脚本。 例如,您可以将查询结果转储到文件中:
bq query --format=csv --max_rows=999999 --use_legacy_sql=false\
"select dept_id,sum(sal) from temp.employee group by dept_id" > employee.csv
然后您可以将其上传到云存储中:
gsutil mv employee.csv 'gs://XXXX/employee.csv'
答案 1 :(得分:2)
BigQuery不提供将查询结果直接导出/下载到GCS或本地文件的功能。首先,您需要在显式设置的目标表中获取查询结果,或者如果未设置,您可以使用保存查询结果的临时(匿名)表 - 您可以从相应的作业属性configuration.query.destinationTable
获取它(表)完成)
然后,您可以将该表用作导出作业的来源
答案 2 :(得分:1)
不支持过滤导出。 您可以将查询结果存储为另一个临时表并导出该表,这将是两个步骤。
答案 3 :(得分:1)
BigQuery不提供直接导出/下载查询的功能 结果保存到GCS或本地文件中。
您仍然可以通过三个步骤使用Web UI导出它
在BigQuery屏幕中,运行查询之前,请转到“更多>查询设置”
这将打开以下内容
您想在这里
然后将其保存,并将查询配置为保存在特定表中。现在您可以运行查询。
要将其导出到GCP,您必须转到表格,然后点击导出>导出到GCS。
这将打开以下屏幕
在选择GCS位置中,定义存储区,文件夹和文件。
例如,您有一个名为 daria_bucket 的存储桶(仅使用小写字母,数字,连字符(-)和下划线(_)。点(。)可以用于形成一个有效的域名。),并想将文件保存到名称为 test 的存储桶的根目录中,然后编写(在“选择GCS位置”中)
daria_bucket/test.csv
如果文件太大(超过1 GB),则会出现错误。要修复它,您必须使用通配符将其保存在更多文件中。因此,您需要添加*,就像这样
daria_bucket/test*.csv
这将在表daria_bucket的内部存储从表中提取的所有数据到多个文件中,这些文件名为test000000000000,test000000000001,test000000000002,... testX。
然后转到存储,您将看到存储桶。
深入其中,您会找到一个(或多个)文件。然后您可以从那里下载。
答案 4 :(得分:0)
@MikhailBerlyan指出,您需要一个中间表。您可以使用BigQuery用户界面来做到这一点:
Save as->Save as table
。此步骤将创建完成过滤的中间表。Export->Export to GCS
。以下是exporting的文档。
答案 5 :(得分:0)
这几天(直到他们再次更改控制台),您可以通过以下方式实现
:1_ run your query
2_ when it is completed, then you can use "Save the result" dropdown
to save it in a *local/cloud* file.
请注意,当前在命令行或API调用中不支持此选项:-)
答案 6 :(得分:0)
最近添加了从BigQuery Standard SQL直接导出的功能:Exporting data to csv format
EXPORT DATA OPTIONS(
uri='gs://mybucket/myfolder2/*.csv',
format='CSV',
overwrite=true,
header=true,
field_delimiter=';') AS
SELECT 1 as field1, 2 as field2
答案 7 :(得分:0)
我的公司尚未订阅 Google Drive,因此我们使用此解决方法 -
Save Query Results
并从 Bigquery Table
下拉菜单中选择 Choose where to save the results data from the query
。bq --location=<your GCP Zone> --destination_format CSV <dataset-id>:<table-name> gs://<gcp-bucket>/<dump-file-name>.csv