首页 > 解决方案 > 使用 Cloud Functions 将 Excel 文件从 FTP 提取到 BigQuery

问题描述

我正在创建一个自动化脚本来从 FTP 下载文件并将它们存储到 BigQuery 中。

问题是 BigQuery 只接受.csv文件。出于这个原因,我正在寻找处理文件的方法.xlsx.xls条件是我计划将此批处理代码放在云中。

我提到后者作为将.xlsx文件转换为的一种方法.csv是使用类似的东西:

import pandas as pd
data_xls = pd.read_excel('file_on_ftp.xlsx')
data_xls.to_csv('csvfile.csv', encoding='utf-8', index=False)

但是,这将在临时存储的某处创建本地文件。显然,使用 Cloud Functions 之后,我必须监控文件是否已被删除,这使得当一个云功能崩溃时它不可靠。

因此有更好的方法来处理.xlsx加载到 BigQuery 中吗?或者这是要走的路?

标签: pythongoogle-cloud-platformgoogle-bigqueryftpgoogle-cloud-functions

解决方案


您可能会对最近发布的本指南感兴趣:“使用 Cloud Functions 将数据从 Cloud Storage 流式传输到 BigQuery”

一般架构是:

  1. 将有问题的文件从 FTP 上传到 Cloud Storage
  2. 您的 Cloud Function 从 Cloud Storage 接收上传事件
  3. 您的云函数将文件加载到内存中(磁盘上没有存储空间)
  4. 您的 Cloud Function 将数据流式传输到 BigQuery

我不确定#1 是否适合您确保文件不会被遗忘在某处的需要,但我认为如果您在假设文件需要上传到 GCP 某处(替代方法是直接从您的本地计算机或您控制的实例流式传输到 BigQuery)。


推荐阅读