需要帮助根据 BigQuery 中的值将 Google Cloud Storage 中的特定 PDF 文件移动到 SFTP

Posted

技术标签:

【中文标题】需要帮助根据 BigQuery 中的值将 Google Cloud Storage 中的特定 PDF 文件移动到 SFTP【英文标题】:Need help moving specific PDF files in Google Cloud Storage to an SFTP, based on values located in BigQuery 【发布时间】:2021-12-28 13:42:25 【问题描述】:

我有一个用例,我需要将存储在 Google Cloud Storage Bucket 中的 PDF 文件复制到我设置的 SFTP。存储桶中的特定文件名和位置将位于 Google BigQuery 视图中。

我的经验有限,我一直在尝试使用我熟悉的工具来解决这个问题,但一直在苦苦挣扎。这些我觉得很舒服的工具是:

BigQuery 微软流 SFTP 在 VirtualMachine 上使用 CMD 提示和 .bat 文件的 WinSCP

我们将不胜感激,特别是如果使用上面列出的工具。

【问题讨论】:

WinSCP 可以访问 GC 存储桶(通过 S3)和 SFTP。所以你可以用它从GC桶下载到本地机器,然后上传到SFTP。 Pentium10 的答案很棒! 【参考方案1】:

您可以通过Cloud Workflows 实现此目的,

基本上你需要创建一个工作流

运行 BigQuery 选择语句(例如 here) 遍历条目 启动发出相关命令的 Cloud Build 作业 从 GCS 下载文件(类似于 workflow) 从 Secret Manager 获取 SFTP 凭据(类似于 this) 向 SFTP 命令发出上传文件

所有这些的一个很好的来源是我的两篇文章中的一部分,你可以找到链接。如果您需要帮助,请私下联系我。

【讨论】:

【参考方案2】:

看来您需要执行以下步骤:

    通过读取 bigquery 表/视图来收集文件名和路径 对于每个文件,然后从 GCS 下载并上传到 FTP 服务器

创建脚本应该非常简单,并且可能是编写健壮且可测试的程序的绝佳选择。

您可以为此使用 Python(也可以使用 Java、Go、Bash...),因为您可以通过 API 轻松地与 Google BigQuery 和 Cloud Storage 进行交互。

然后根据您选择的语言进行 FTP 上传。

参考资料:

    从大查询中读取数据:https://cloud.google.com/bigquery/docs/bigquery-storage-python-pandas 从 GCS 下载数据:https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-python

【讨论】:

以上是关于需要帮助根据 BigQuery 中的值将 Google Cloud Storage 中的特定 PDF 文件移动到 SFTP的主要内容,如果未能解决你的问题,请参考以下文章

熊猫,我怎样才能避免使用 iterrow (如何根据来自另一个数据帧的值将值分配给数据帧中的新列)

根据数据框中单元格中的值将颜色应用于单元格

需要根据表中的唯一值将一列分解为多列?

java根据HashMap中的值将其元素排序

根据另一个字段的值将字符串附加到 varchar2 字段

循环遍历Vue.js中的动态数组,然后根据对应的值将每个对象组件添加到单独组件中的div中?