Экспорт данных в файлы CSV с помощью CURL в Google Cloud SQL - PullRequest
2 голосов
/ 12 апреля 2019

Я получаю сообщение об ошибке при запуске CURL в терминале.Ошибка выглядит следующим образом:

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "parseError",
    "message": "Parse Error"
   }
  ],
  "code": 400,
  "message": "Parse Error"
 }
}

Вот мой код CURL:

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{"exportContext":
                {"fileType": "CSV",
                 "uri": "gs://project-initial-db/test_gutil.csv",
                 "databases": ["my_db"] },
                 "csvExportOptions": 
                     {"selectQuery":"SELECT * FROM `trans_channel` INTO OUTFILE "test_gutil.csv" CHARACTER SET "utf8mb4" FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY "\"" ESCAPED BY "\\" LINES TERMINATED BY "\n";"}}' \
   -X POST \
   https://www.googleapis.com/sql/v1beta4/projects/project-11/instances/project-db/export

Кто-нибудь знает об этой ошибке?

Я ищу экспорт в CSV, используяCURL в Google Cloud SQL, но я просто получаю немного информации.

К вашему сведению, я установил переменную среды (GOOGLE_APPLICATION_CREDENTIALS), и аутентификация прошла успешно.

Я буду благодарен залюбая помощь, которую вы можете предоставить.Спасибо!

1 Ответ

1 голос
/ 12 апреля 2019

Вы просто что-то упускаете из поля "cvsExportOptions", которое должно выглядеть следующим образом:

"csvExportOptions": 
                 {"selectQuery":"[YOUR_QUERY]"}

Вы можете получить более подробную информацию здесь , где вы также можете проверить правильность скручивания, используя утилиту Try the API в правой части страницы.

EDIT

Копирование вызова API из утилиты Try this API, которую я использовал для тестирования в точности так, как она работала для меня. Попробуйте вместо замены заполнителей вашими данными

ACCESS_TOKEN="$(gcloud auth application-default print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json' \
     --data '{
  "exportContext": {
    "fileType": "CSV",
    "uri": "gs://[YOUR_BUCKET]/[YOUR_PATH_TO_DUMP_FILE]",
    "databases": [
      "[YOUR_DATABASE]"
    ],
    "csvExportOptions": {
      "selectQuery": "[YOUR_QUERY]"
    }
  }
}' \
   -X POST \
   https://www.googleapis.com/sql/v1beta4/projects/[YOUR_PROJECT]/instances/[YOUR_INSTANCE]/export
...