我正在创建一个自动脚本以从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中?还是这条路要走?
您可能对此指南感兴趣,该指南是最近发布的:"Streaming data from Cloud Storage into BigQuery using Cloud Functions"。
一般架构是:
我不确定#1是否适合您的需要,以确保文件不会被遗忘在某个地方,但是如果您在假设文件需要上传到GCP的前提下进行操作,那么我认为这可能是最好的解决方案(替代方法是直接从您的本地计算机或您控制下的实例向BigQuery流式传输。)>
我的好方法是通过Cloud Functions将文件从FTP提取到GCS。就像提到的@ Dustin一样,您可以从GCS将数据流式传输到BigQuery中]
这是通过Cloud Functions从FTP提取文件的方法