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

Google bigquery Google BigQuery,如何将数据从Google云存储加载到BigQuery,google-bigquery,google-cloud-storage,Google Bigquery,Google Cloud Storage,由于高性能,我正在切换到大查询。 但不知道如何将数据从谷歌云存储上传到大查询数据库。 还有一些问题。。。 我可以在使用大查询时直接从谷歌云存储访问我的数据库吗。 我必须先把它转换成某种格式。 我将如何将大查询数据库更新到我的谷歌云存储数据库 提前感谢。假设您的数据采用受支持的格式分隔,如csv/tsv或json,您可以使用UI、CLI或API轻松地将数据从Google云存储加载到BigQuery。例如,使用CLI: bq load mydataset.mytable gs://my_bucket

由于高性能,我正在切换到大查询。 但不知道如何将数据从谷歌云存储上传到大查询数据库。 还有一些问题。。。 我可以在使用大查询时直接从谷歌云存储访问我的数据库吗。 我必须先把它转换成某种格式。 我将如何将大查询数据库更新到我的谷歌云存储数据库


提前感谢。

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

bq load mydataset.mytable gs://my_bucket/file.csv name:string,gender:string,count:integer 
这将把文件.csv从Google云存储桶“my_bucket”加载到“mydataset”数据集下的表“mytable”中。该表将有三列,-字符串类型的名称和性别以及整数类型的计数。阅读BigQuery快速入门指南[1]可能会对您有所帮助

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

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

[1]


[2]

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

bq load mydataset.mytable gs://my_bucket/file.csv name:string,gender:string,count:integer 
这将把文件.csv从Google云存储桶“my_bucket”加载到“mydataset”数据集下的表“mytable”中。该表将有三列,-字符串类型的名称和性别以及整数类型的计数。阅读BigQuery快速入门指南[1]可能会对您有所帮助

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

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

[1]


[2]

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

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

你们给出了第一次上传的解决方案,若我想在附加模式下上传,或者覆盖怎么办mode@deepanshudagar-我在回答中添加了一个部分来解释附加/覆盖选项。感谢您添加了-replace标志,这正是我想要的,我在他们的任何在线文档中都没有看到它。它肯定在那个里,但若你们看bq帮助加载你们给出的解决方案只是第一次上传,若我想上传附加模式,或覆盖mode@deepanshudagar-我在回答中添加了一个部分来解释附加/覆盖选项。感谢您包含-replace标志,这正是我想要的,我在他们的任何在线文档中都没有看到。如果你看bq帮助加载,它肯定在那里