使用 curl 在变量中执行 SQL 命令

executing SQL command in a variable using curl

我正在尝试针对 MarkLogic 服务器编写以下 curl 命令:-

curl --digest -u "${USERNAME}:${PASSWORD}" -k -X POST "${URLCALL}" -H "Content-Type: application/json" -H "cache-control: no-cache" -H "Accept: text/csv" -d@"{$SELECTQUERY}"

但是上面的命令对我不起作用。我得到的错误是:

Warning: Couldn't read data from file "{select count(*) from
Warning: db.table1}", this makes an empty POST.

其中:

USERNAME=admin
PASSWORD=admin
URLCALL="https://localhost:8010/v1/rows"
SELECTQUERY="select count(*) from db.table1"

我正在尝试在我的 MarkLogic 服务器中执行此 curl 和 运行 SELECTQUERY 变量内的 SQL 查询,我希望将此查询的计数发送到一个变量还。我怎样才能实现它?

对于 curl 数据参数(-d--data),如果您设置的是字符串而不是对文件路径的引用,则删除 @.

如果您要发送 SQL 语句,则将 Content-typeapplication/json 更改为 application/sql

https://docs.marklogic.com/REST/POST/v1/rows

Content-type
The MIME type of the request body. Allowed values:

  • application/json 用于以 JSON 格式序列化为 AST(抽象语法树)的 Optic 查询
  • application/vnd.marklogic.querydsl+javascript 对于以 JavaScript 语法表示的 Optic 查询
  • application/sql 对于 SQL SELECT 语句
  • application/sparql-query 对于 SPARQL SELECT 语句

你会想要使用:

curl --digest -u "${USERNAME}:${PASSWORD}" -k -X POST "${URLCALL}" -H "Content-Type: application/sql" -H "cache-control: no-cache" -H "Accept: text/csv" -d "{$SELECTQUERY}"