Google BigQuery,如何将数据从谷歌云存储加载到BigQuery

时间:2016-02-25 09:35:15

标签: google-bigquery google-cloud-storage

由于性能高,我正在切换到Big Query。 但不知道如何将数据从Google云端存储上传到Big Query Database。 还有一些问题...... 我可以在使用Big Query时直接从谷歌云存储访问我的数据库。 我是否必须先将其转换为某种格式。 我将如何将Big Query数据库更新到我的Google云端存储数据库。

提前致谢。

2 个答案:

答案 0 :(得分:8)

假设您的数据采用支持的格式(分隔为csv / tsv或json),您可以使用UI,CLI或API轻松地将数据从Google Cloud Storage加载到BigQuery。例如,使用CLI:

bq load mydataset.mytable gs://my_bucket/file.csv name:string,gender:string,count:integer 

这会将您的Google Cloud Storage存储桶'my_bucket'中的file.csv加载到'mydataset'数据集下的'mytable'表中。该表将有三列, - 字符串类型的名称和性别以及整数类型的计数。您可以查看BigQuery快速入门指南[1]

如果您需要添加更多数据,只需再次运行bq load命令,默认情况下,它会将CSV中的新行追加到BigQuery表中。如果您需要覆盖数据,请添加--replace标志,以便在加载新数据之前删除现有内容

此外,您甚至可以在Google云端存储中对您的文件运行查询,而无需先使用外部表格将它们加载到BigQuery中[2]

[1] https://cloud.google.com/bigquery/bq-command-line-tool-quickstart

[2] https://cloud.google.com/bigquery/federated-data-sources

答案 1 :(得分:0)

使用Python U可以更新为:

import numpy as np
import uuid
from gcloud import bigquery


def load_data_from_gcs(dataset_name, table_name, source):
    bigquery_client = bigquery.Client()
    dataset = bigquery_client.dataset(dataset_name)
    table = dataset.table(table_name)
    job_name = str(uuid.uuid4())
    if table.exists():
        table.delete()
    table.schema = (
        bigquery.SchemaField('ID', 'STRING'),
        bigquery.SchemaField('days', 'STRING'),
        bigquery.SchemaField('last_activ_date', 'STRING'),


    )

    table.create()
    job_name = str(uuid.uuid4())
    job = bigquery_client.load_table_from_storage(
        job_name, table, source)

    job.begin()

    wait_for_job(job)

    print('Loaded {} rows into {}:{}.'.format(
        job.output_rows, dataset_name, table_name))

def wait_for_job(job):
    while True:
        job.reload()
        if job.state == 'DONE':
            if job.error_result:
                raise RuntimeError(job.errors)
            return
        time.sleep(1)   
if __name__ == "__main__":
    load_data_from_gcs('my_model','my_output', 'gs://path-uat/data_project/my_output.csv')