将 SQL 数据库转储(一个 SQL 文件中的多个表)导入 BigQuery

tru*_*bot 5 google-cloud-storage google-cloud-sql google-bigquery google-cloud-platform google-cloud-functions

我\xe2\x80\x99m 尝试自动执行将 postgres 数据库加载到 BigQuery 的任务作为日常工作。postgres 数据库采用单个 sql 文件的形式,其中包含所有表及其数据。该文件托管在 Google Cloud Storage (GCS) 上。我想获取该 sql 文件并将其中的每个表加载到 BigQuery 中其自己单独的对应表中。

\n\n

StackOverflow 中关于此问题的大多数问答都假设 sql 文件仅包含一个表,而不是多个表。不幸的是,目前 BigQuery 似乎不支持内部包含多个表的单个文件。此外,我还在寻找自动化解决方案,而不是一次性的解决方案。所以,我正在寻找其他解决方案。

\n\n

我\xe2\x80\x99m 希望解决两个问题:

\n\n
    \n
  1. 如何将包含整个数据库的单个 sql 转储文件拆分为每个表的单独 csv 文件?
  2. \n
  3. 我应该使用哪种工具来自动化数据管道中的每个步骤?
  4. \n
\n\n

我对每个问题都有一些选择。我希望听到有关哪种选项最可行的反馈,以及您之前可能听说过或使用过的任何其他策略。

\n\n
    \n
  1. 对于每个表将文件拆分为单独的 csv 文件:

    \n\n
      \n
    1. 使用脚本将文件拆分为多个 csv 文件,每个表一个。(可扩展性最差,尤其是随着数据库的增长)
    2. \n
    3. 将 sql 文件上传到 Cloud SQL。将每个表作为单独的 csv 文件导出到 GCS 中。将每个文件加载到 BigQuery 中。\n(来源:将 Google Cloud SQL 数据导入 BigQuery 的最佳方式)\n(来源:将 Google Cloud SQL 备份上传到 Bigquery
    4. \n
  2. \n
  3. 对于自动化数据管道中每个步骤的工具:(我\xe2\x80\x99m对它们不太熟悉,如果下面的工具都不是正确的选择,希望我能得到纠正。)

    \n\n
      \n
    1. 云功能 - 该工具可以连接到各种 GCP API,并且最有前途,但我想在开始这条道路之前确认这是否是正确的工具。\n(自动将文件从 Google Cloud Storage 上传到 Bigquery
    2. \n
    3. Cloud Composer - 从我到目前为止收集到的信息来看,这个工具似乎有点贵,但如果它是唯一可能的工具,我可以研究一下。
    4. \n
    5. DataFlow - 我\xe2\x80\x99m的印象是这个工具只能对已经分离的表进行数据转换,并且不具备执行导入/导出作业的能力,例如将表从Cloud SQL保存到GCS 作为 csv 文件。
    6. \n
    7. 还有其他工具可以调用 GCP API 并可以启动我未在此处列出的\xe2\x80\x99t 的日常作业吗?
    8. \n
  4. \n
\n\n

现在,我正在考虑使用 Cloud Functions 来编排以下管道:GCS -> Cloud SQL -> 拆分为单独的 csv 文件 -> 上传到 GCS -> 引入 BigQuery。如果您知道任何其他替代策略,\xe2\x80\x99d 将不胜感激。

\n