使用云功能将Excel文件从FTP提取到BigQuery

问题描述 投票:1回答:2

我正在创建一个自动脚本以从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中?还是这条路要走?

python pandas ftp google-bigquery google-cloud-functions
2个回答
2
投票

您可能对此指南感兴趣,该指南是最近发布的:"Streaming data from Cloud Storage into BigQuery using Cloud Functions"

一般架构是:

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

我不确定#1是否适合您的需要,以确保文件不会被遗忘在某个地方,但是如果您在假设文件需要上传到GCP的前提下进行操作,那么我认为这可能是最好的解决方案(替代方法是直接从您的本地计算机或您控制下的实例向BigQuery流式传输。)>


0
投票

我的好方法是通过Cloud Functions将文件从FTP提取到GCS。就像提到的@ Dustin一样,您可以从GCS将数据流式传输到BigQuery中]

这是通过Cloud Functions从FTP提取文件的方法

© www.soinside.com 2019 - 2024. All rights reserved.