我有一组文本文件,每5分钟上传一次到google云存储。我想每5分钟将它们放到BigQuery中(因为文本文件每隔5分钟上传到云存储中)。我知道文本文件不能上传到BigQuery。做这件事的最佳方法是什么?
文本文件的示例

提前谢谢。
发布于 2020-08-06 10:15:07
他是另一种方法,它将使用基于事件的Cloud Function将数据加载到BigQuery中。用"Trigger Type"作为云存储创建一个云函数。一旦文件/文件加载到云存储桶中,它将调用/触发云函数事件,来自云存储的数据将被加载到BigQuery中。
import pandas as pd
from google.cloud import bigquery
def bqDataLoad(event, context):
bucketName = event['bucket']
blobName = event['name']
fileName = "gs://" + bucketName + "/" + blobName
bigqueryClient = bigquery.Client()
tableRef = bigqueryClient.dataset("bq-dataset-name").table("bq-table-name")
dataFrame = pd.read_csv(fileName)
bigqueryJob = bigqueryClient.load_table_from_dataframe(dataFrame, tableRef)
bigqueryJob.result()发布于 2020-08-06 01:43:47
您可以利用BigQuery传输。
目前,该服务每小时使用一个1h最低档案年龄限制传输新添加的文件,该移除即将到达移除。
该服务检查新文件是否存在,这些文件从上传到桶中的时间起超过1小时,例如:
对于第2步,您需要处理文本文件与被BigQuery接受一样。我认为最简单的方法是使用.csv文件。按以下方式编辑.txt文件:
您还需要确保以下内容:
对于步骤3,请在建议的转移配置下面找到
习惯->每1小时一次
你的桶/你的文件夹/文本*
传输将接收以名称文本开头的所有文件。
附文
CSV
对于步骤5,如果传输成功,则每小时在“传输详细信息”页面中进行验证一次。如果您得到错误,整个批文件将不会被传输。使用CLI (请参阅下面的命令)获取有关哪个文件有问题和错误性质的信息。您将需要删除相应的文件从桶,纠正它和重新上传它。
bq -格式=prettyjson显示-j bqts_.
也可以使用预览您的BigQuery表来查看您传送的文本。
发布于 2021-07-05 12:31:22
这是迄今为止还没有提出的另一种选择:在熊猫中打开txt文件(比如在GCP AI笔记本中),然后使用熊猫函数gbq上传它。这是非常直截了当的,并在这里详细描述。我发现这是最好的解决方案,如果一个是附加的,因为它不需要描述模式。
https://stackoverflow.com/questions/63186809
复制相似问题