Db2 Warehouse:如何使用 V2 或 V3 REST 接口加载表数据
Posted
技术标签:
【中文标题】Db2 Warehouse:如何使用 V2 或 V3 REST 接口加载表数据【英文标题】:Db2 Warehouse: How to load table data using the V2 or V3 REST Interface 【发布时间】:2018-09-05 15:19:14 【问题描述】:我在 IBM Cloud 上实例化了一个 Db2 Warehouse,并在该 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;三
我实际上能够使用 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 函数,当 body 必须持有加载选项时,如何构建多部分 REST 请求?
感谢任何提示。谢谢!!
【问题讨论】:
【参考方案1】:使用V3 APIs 将数据从本地 CSV 文件加载到 Db2 on Cloud 的过程非常复杂,需要以下步骤:
-
生成身份验证令牌 -
POST /auth/tokens
上传本地文件到DB2实例-POST /home_content/path
使用上一步上传的文件创建加载作业 - POST /load_jobs
使用第 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 中调试加载作业的调用。在这种情况下,您需要为加载作业完成构建循环检查。
【讨论】:
以上是关于Db2 Warehouse:如何使用 V2 或 V3 REST 接口加载表数据的主要内容,如果未能解决你的问题,请参考以下文章