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