【问题标题】:Google BigQuery, How to load data from google cloud storage to BigQueryGoogle BigQuery,如何将数据从谷歌云存储加载到 BigQuery
【发布时间】:2016-06-07 23:53:56
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: google-bigquery google-cloud-storage


    【解决方案1】:

    使用 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')
    

    【讨论】:

      【解决方案2】:

      假设您的数据采用受支持的格式(分隔,例如 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 Cloud Storage 中对您的文件运行查询,而无需先使用外部表将它们加载到 BigQuery [2]

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

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

      【讨论】:

      • 您给出的解决方案是第一次上传,如果我想以附加模式或覆盖模式上传怎么办
      • @deepanshudagar - 我在答案中添加了一个部分来解释附加/覆盖选项。
      • 感谢您提供 --replace 标志,这正是我所寻找的,但我在他们的任何在线文档中都没有看到它。如果您查看bq help load,它肯定存在
      猜你喜欢
      • 2017-02-10
      • 2018-10-30
      • 2014-01-07
      • 1970-01-01
      • 2019-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      相关资源
      最近更新 更多