Db2 Warehouse:如何使用V2或V3 REST接口加载表数据

时间:2018-09-05 15:19:14

标签: dashdb

我已经在IBM Cloud上实例化了一个Db2仓库,并在该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;一个
2;两个
3; 3

我实际上能够使用V1 REST接口加载该数据:

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"

但是:如何使用V2或V3 REST接口将数据加载到Db2 Warehouse表中? 特别是如果我需要使用/ load_jobs函数,那么当主体必须包含加载选项时,如何构建多部分REST请求?

任何提示都值得赞赏。谢谢!

1 个答案:

答案 0 :(得分:0)

使用V3 APIs将数据从本地CSV文件加载到Cloud上的Db2的过程非常复杂,需要以下步骤:

  1. 生成身份验证令牌-POST /auth/tokens
  2. 将本地文件上传到DB2实例-POST /home_content/{path}
  3. 使用上一步中上传的文件-POST /load_jobs
  4. 创建加载作业
  5. 使用步骤3中的ID重复检查加载作业是否完成-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存储库并在integration tests中调试装入作业的调用。在这种情况下,您需要构建循环检查以完成加载作业。