如何使用 Node.js 中的云函数在 CloudSQL 中加载 CSV 数据



我正在接收特定存储桶中的 CSV 文件中的数据。我必须在相应的CloudSQL表中加载该数据。我对此有以下疑问:

  1. 我是否可以选择在我的云函数代码中调用任何 api 或 gcloud 命令或 CURL 命令,该命令将 CSV 作为输入并在数据库中执行插入?
  2. 如果上述选项不可行,那么是否有任何性能优化的方法可用于准备查询并在 CloudSQL 中触发查询,因为数据将非常庞大,我想加载这些数据需要花费大量时间。

有关将 CSV 导入 CloudSQL 的文档包含以下curl调用示例:

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" 
     --header 'Content-Type: application/json' 
     --data '{"importContext":
                  {"fileType": "CSV",
                   "uri": "gs://<BUCKET_NAME>/<PATH_TO_DUMP_FILE>",
                   "database": "<DATABASE_NAME>",
                   "csvImportOptions":
                        {"table": "<TABLE_NAME>"}}}' 
   -X POST 
   https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/import

需要注意的一些重要事项:

  • curl只是从命令行执行 HTTP 调用的一种方式。在 Cloud Functions 中,您将从代码执行等效的 HTTP 调用,例如在 Node.js 中使用 fetch()
  • 要导入的 CSV 文件必须位于 Google Cloud Storage 存储桶中。
  • Cloud Functions 在所谓的应用程序默认凭据下运行 Google 环境,因此可能不需要ACCESS_TOKEN。如果毕竟需要它们,请看这里:https://www.npmjs.com/package/google-auth-library#application-default-credentials

最新更新