首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将云存储中的文本文件(.txt)加载到大型查询表中

将云存储中的文本文件(.txt)加载到大型查询表中
EN

Stack Overflow用户
提问于 2020-07-31 06:28:37
回答 3查看 4.8K关注 0票数 2

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

文本文件的示例

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-08-06 10:15:07

他是另一种方法,它将使用基于事件的Cloud Function将数据加载到BigQuery中。用"Trigger Type"作为云存储创建一个云函数。一旦文件/文件加载到云存储桶中,它将调用/触发云函数事件,来自云存储的数据将被加载到BigQuery中。

代码语言:javascript
复制
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()
票数 1
EN

Stack Overflow用户

发布于 2020-08-06 01:43:47

您可以利用BigQuery传输

  1. 带有模式的创建一个空的BigQuery表 (编辑为文本)文本:STRING
  2. 将.txt文件转换为.csv文件
  3. 创建来自的BigQuery传输
  4. 将.csv文件上载到GCS桶中
  5. 检查你的转机是否成功

目前,该服务每小时使用一个1h最低档案年龄限制传输新添加的文件,该移除即将到达移除

该服务检查新文件是否存在,这些文件从上传到桶中的时间起超过1小时,例如:

  • text1.csv在4:46上传
  • text2.csv在5:01上传
  • text3.csv在5:06上传 结果:
  • 5:00的传输运行不会传输任何文件。
  • 6:00的传输运行将传输text1.csv
  • 7:00的传输运行将传输text2.csv和text3.csv

对于第2步,您需要处理文本文件与被BigQuery接受一样。我认为最简单的方法是使用.csv文件。按以下方式编辑.txt文件:

  • 在课文的开头和结尾加上“我要去市场买蔬菜”。
  • “另存为”文件作为text1.csv
  • 将文件命名为具有相同开头字符的文件,例如text....csv,以便能够使用通配符
  • 对下一个文件重复此操作(text2.csv、text3.csv、text4.csv .)

您还需要确保以下内容:

  • 您的文本不包含“文本中的字符-将它们替换为‘字符’
  • 确保整个文本以换行符(EOF) 不支持的形式内联

对于步骤3,请在建议的转移配置下面找到

  • 附表选项:

习惯->每1小时一次

  • 云存储URI:

你的桶/你的文件夹/文本*

传输将接收以名称文本开头的所有文件。

  • 写作偏好:

附文

  • 文件格式:

CSV

对于步骤5,如果传输成功,则每小时在“传输详细信息”页面中进行验证一次。如果您得到错误,整个批文件将不会被传输。使用CLI (请参阅下面的命令)获取有关哪个文件有问题和错误性质的信息。您将需要删除相应的文件从桶,纠正它和重新上传它。

bq -格式=prettyjson显示-j bqts_.

也可以使用预览您的BigQuery表来查看您传送的文本。

票数 0
EN

Stack Overflow用户

发布于 2021-07-05 12:31:22

这是迄今为止还没有提出的另一种选择:在熊猫中打开txt文件(比如在GCP AI笔记本中),然后使用熊猫函数gbq上传它。这是非常直截了当的,并在这里详细描述。我发现这是最好的解决方案,如果一个是附加的,因为它不需要描述模式。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63186809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档