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帮助加载,它肯定在那里