Как загрузить данные CSV в CloudSQL с помощью облачных функций в Node.js? - PullRequest
0 голосов
/ 11 февраля 2019

Я получаю данные в CSV-файле в определенном сегменте.Я должен загрузить эти данные в соответствующую таблицу CloudSQL.У меня есть следующие запросы по этому поводу:

  1. Есть ли у меня возможность вызывать какие-либо команды api или gcloud или команду CURL в моем коде функции облака, который принимает CSV в качестве входных данных и выполняет вставки в БД?
  2. Если описанный выше вариант невозможен, то существует ли какой-либо оптимизированный для производительности способ подготовки запросов и их запуска в CloudSQL, так как данные будут огромными, и я полагаю, что загрузка этих данных займет много времени.

1 Ответ

0 голосов
/ 11 февраля 2019

Документация по импорту 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-вызов из командной строки.В облачных функциях вы выполняете эквивалентный HTTP-вызов из своего кода, например, с fetch() в Node.js.
  • импортируемый CSV-файл должен находиться в корзине Google Cloud Storage.
  • Облачные функции запускают среду Google с так называемыми учетными данными приложения по умолчанию, поэтому ACCESS_TOKEN может не потребоваться.Если они нужны, посмотрите здесь: https://www.npmjs.com/package/google-auth-library#application-default-credentials
...