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

向Cube.js服务器发送原始SQL查询并透传到关联数据库是否可行?

解答

是的,Cube.js 原生支持执行客户端提交的原始SQL并转发到关联的下游数据库,不需要使用内置的JSON查询格式,你可以根据自己的场景选择以下两种实现方案:

  • 方案1:使用官方原生sqlQuery接口
    直接向Cube.js服务的/cubejs-api/v1/sql端点发送POST请求即可执行原始SQL,请求体示例如下:
    {
      "query": {
        "sql": "SELECT id, name FROM orders WHERE amount > 100"
      }
    }
    
    该接口默认复用Cube.js已配置的数据库连接池、查询限流队列规则,你也可以通过queryRewrite等服务端钩子对提交的SQL做权限校验、内容审计,降低安全风险。
  • 方案2:自定义服务端路由(适合需要额外逻辑的场景)
    如果你需要对SQL执行流程做定制化处理,可以在Cube.js项目的api目录下新增自定义路由,直接调用内置数据库驱动执行SQL,示例代码如下:
    // api/raw-sql.js
    module.exports = async (req, res) => {
      const { rawSql } = req.body;
      // 此处可添加自定义权限校验、SQL内容过滤逻辑
      const queryResult = await req.cubejsApi.driver('default').query(rawSql);
      res.json(queryResult);
    }
    

安全提示:直接执行客户端提交的原始SQL存在极高的SQL注入风险,建议仅在内部可信环境开放该能力,若需对外暴露请严格限制SQL执行权限、做好内容校验,避免数据泄露或被恶意篡改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 06:45:03