通过 API 从云上的 DB2 获取 SQL 结果到 Power Query
Posted
技术标签:
【中文标题】通过 API 从云上的 DB2 获取 SQL 结果到 Power Query【英文标题】:Get SQL results from DB2 on cloud to Power Query via API 【发布时间】:2021-09-09 20:18:00 【问题描述】:我尝试通过 Excel Power Query 连接到云上的 db2。
基于documentation,这是 curl 请求的格式:
curl -X POST https://hostname.com/dbapi/v4/sql_query_export -H 'authorization: Bearer MyToken' -H 'content-type: text/csv' -d '"command":"select * from mytable"'
我试图通过 GUI 去,但这给了我错误
我很确定我做的不对,但我什至无法谷歌如何传递我的参数。
有人可以指导如何为此组装 M 代码吗?
我根据@nfgl 的回答试过了
let
body = [#"command"="select * from mytable"]
,json = Json.FromValue(body)
,wc = Web.Contents("https://hostname.com/dbapi/v4/sql_query_export", [Headers=[#"content-type"="text/csv", authorization="Bearer XXX"]])
,Source = Csv.Document(wc,[Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.Csv])
in
Source
但是不能匿名绕过凭据 ui:
当我尝试使用令牌的 Web API 时:
顺便说一句,一切都适用于 python:
import http.client
conn = http.client.HTTPSConnection("hostname.com")
payload = "\"command\":\"select * from mytable\""
headers =
'content-type': "text/csv",
'authorization': "Bearer XXX"
conn.request("POST", "/dbapi/v4/sql_query_export", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
【问题讨论】:
您可能想从您的问题中删除凭据... 那些是假的,但还是谢谢。 【参考方案1】:不能通过 GUI 来做,命令 JSON 必须在请求内容中,并且 content-type 是你发送的那个,即 JSON,打开高级编辑器并做这样的事情
let
url = "https://showcase.api.linx.twenty57.net/UnixTime/fromunixtimestamp",
body = [#"UnixTimeStamp"= 1589772280, #"Timezone"=""],
json = Json.FromValue(body),
wc = Web.Contents(url, [Headers=[#"Content-Type"="application/json"], Content=json]),
Source = Csv.Document(wc,[Delimiter=",", Encoding=65001, QuoteStyle=QuoteStyle.Csv])
in
Source
【讨论】:
非常感谢您的指导。但是仍然无法通过 PQ 凭据 UI。我尝试更新了我的问题。 @MichalPalko 抱歉帮不上忙以上是关于通过 API 从云上的 DB2 获取 SQL 结果到 Power Query的主要内容,如果未能解决你的问题,请参考以下文章
将 Python Flask Web 服务器应用程序连接到 DB2
IBM Db2 on Cloud 中使用的 SQL 方言是啥