Db2 Warehouse: как загрузить данные таблицы с использованием интерфейса REST V2 или V3 - PullRequest
0 голосов
/ 05 сентября 2018

Я создал экземпляр хранилища Db2 в IBM Cloud и создал таблицу в этом экземпляре Db2. Теперь я хочу загрузить эту таблицу с данными, которые находятся в локальном файле * .csv.

Я могу создать токен на предъявителя:

curl -X POST "https://dashdb-entry-yp-lon02-01.services.eu-gb.bluemix.net/dashdb-api/v2/auth" -H  "accept: application/json" -H  "content-type: application/json" -d "{  \"userid\": \"dash14096\",  \"password\": \"************\"}"

Также я могу получить метаинформацию таблицы:

curl -X GET "https://dashdb-entry-yp-lon02-01.services.eu-gb.bluemix.net/dashdb-api/v2/schemas/DASH14096/tables/MYTABLE" -H  "accept: application/json" -H  "Authorization: Bearer eyJ0eXAiOiJKV1Q..."

У меня есть локальный файл "mydata.csv" со следующим содержимым:
1; ONE
2; ДВА
3; ТРИ

Я действительно могу загрузить эти данные с помощью интерфейса REST V1:

curl --user "dash14096:************" -H "Content-Type: multipart/form-data" -X POST -F loadFile1=@".\mydata.csv" "https://dashdb-entry-yp-lon02-01.services.eu-gb.bluemix.net/dashdb-api/load/local/del/DASH14096.MYTABLE?hasHeaderRow=false&delimiter=;&loadAction=REPLACE"

НО: как я могу загрузить данные в свою таблицу хранилища Db2, используя интерфейс REST V2 или V3? В частности, если мне нужно использовать функцию / load_jobs, как создать составной REST-запрос, когда тело должно содержать параметры загрузки?

Любая подсказка приветствуется. Спасибо !!

1 Ответ

0 голосов
/ 05 октября 2018

Процесс загрузки данных из локального файла CSV в Db2 в облаке с использованием V3 API довольно сложный и потребует следующих шагов:

  1. сгенерировать токен авторизации - POST /auth/tokens
  2. загрузить локальный файл в экземпляр DB2 - POST /home_content/{path}
  3. создать задание загрузки, используя файл, загруженный на предыдущем шаге - POST /load_jobs
  4. повторно проверять выполнение задания загрузки, используя идентификатор из шага 3 - GET /load_jobs/{id}

Вы также можете использовать модуль db2-rest-client npm:

export DB_USERID='dash14096'
export DB_PASSWORD='************'
export DB_URI='https://dashdb-entry-yp-lon02-01.services.eu-gb.bluemix.net/dbapi/v3'
db2-rest-client load --file=mydata.csv --table='MYTABLE' --schema='MYSCHEMA' --type=INSERT

Если вы хотите проверить полезную нагрузку для запросов и построить свои собственные команды CURL в скрипте - вы можете клонировать репозиторий git и отлаживать вызовы для задания загрузки в интеграционных тестах . В этом случае вам нужно будет выполнить проверку цикла для завершения загрузки задания.

...