You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Curl查询Druid SQL时WHERE子句报错求助

问题解决:Druid SQL查询INFORMATION_SCHEMA.COLUMNS报错"Column 'myTable' not found"

错误原因

你的SQL语句犯了SQL语法规范错误:用双引号包裹了字符串常量。在SQL中,双引号用于标识数据库对象(如列名、表名),单引号才是用来包裹字符串值的。

你的查询语句WHERE "TABLE_NAME"="myTable"会被解析为:"查找TABLE_NAME列的值等于myTable列的值的记录",但不存在名为myTable的列,因此抛出Column 'myTable' not found错误。

另外从你提供的无WHERE子句查询结果来看,你可能混淆了表名和列名:

  • 实际表名是apim_metrics(对应TABLE_NAME字段)
  • myTable是该表下的一个列名(对应COLUMN_NAME字段)

正确的查询写法

根据你的需求,分两种情况给出正确的curl命令:

情况1:查询名为apim_metrics的表的所有列信息

curl -kv -H "Content-Type: application/json" -X POST http://localhost:8082/druid/v2/sql?pretty --data '{"query" : "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE \"TABLE_NAME\"=''apim_metrics''"}'

或者使用JSON转义双引号的写法:

curl -kv -H "Content-Type: application/json" -X POST http://localhost:8082/druid/v2/sql?pretty --data '{"query" : "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE \"TABLE_NAME\"=\"apim_metrics\""}'

情况2:查询所有表中名为myTable的列信息

curl -kv -H "Content-Type: application/json" -X POST http://localhost:8082/druid/v2/sql?pretty --data '{"query" : "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE \"COLUMN_NAME\"=''myTable''"}'

关键注意事项

  • Druid的INFORMATION_SCHEMA字段名(如TABLE_NAME、COLUMN_NAME)是大小写敏感的,必须用双引号包裹才能正确识别
  • SQL中的字符串值必须用单引号包裹,避免被解析为数据库对象名
  • 在bash中使用curl发送JSON数据时,若JSON内部包含单引号,需要用两个单引号''转义;若包含双引号,需要用\"转义

内容的提问来源于stack exchange,提问作者Christian68

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 15:45:11