用 n8n + GPT-4o 把自然语言转成 BigQuery SQL 并执行
聊天输入 → 拉取 BigQuery 表结构 → GPT-4o 生成 SQL → 执行查询 → 返回结果
- 给谁
- 需要查询数据但不会写 SQL 的分析师、客服或业务人员
- 你会得到
- 在聊天窗口用自然语言提问,自动获得可执行的 BigQuery SQL 与查询结果
- 你需要
- n8n · google-bigquery
硬约束
前置条件:可访问的 n8n 实例;OpenAI API key;Google Cloud 项目及 BigQuery 数据集权限(Service Account JSON key 或 OAuth2)。费用:OpenAI API 按 token 计费,BigQuery 按查询数据量计费。
他们做了什么
作者 rbreen 在 n8n 中搭建了一个工作流模板:用户通过嵌入式聊天窗口输入自然语言问题,工作流先向 BigQuery 的 INFORMATION_SCHEMA 拉取当前数据集的表与列结构,将结构文本与用户问题合并后交给 GPT-4o,模型根据提供的 schema 生成仅使用现存字段的 SQL,并以 JSON 格式输出 {"query":"..."};随后工作流用第二个 BigQuery 节点执行该 SQL 并返回结果。Simple Memory 节点按 sessionId 保存短期记忆,支持多轮追问。
效果如何
作者报告该模板可用于分析师、客服等无 SQL 基础的用户直接查询数据(author_report)。模板在 n8n.io 上展示为已发布状态,视图数 2521。
值得知道
systemMessage 中硬编码了 `n8nautomation-453001.email_leads_schema.` 前缀,实际部署时必须替换为自己的 project.dataset,否则生成的 SQL 会指向不存在的资源。错误输出分支(Run query against schema 的 onError=continueErrorOutput)会进入 Code 节点,返回 "That query didn't work. Try another question."。建议在生产环境添加 LIMIT 1000 等行数保护,或缓存 INFORMATION_SCHEMA 结果以降低 BigQuery 费用。
n8n 工作流模板
结构已检查 · 未实际运行下载后在 n8n 选择“Import from File”,或复制 JSON 后粘贴到编辑器。先配置自己的账号,再用测试数据运行;模板默认未启用。
配置与测试清单
需要绑定的凭证
- OpenAI Chat Model 节点:绑定OpenAI API 凭证。
- Output all table, and column names in your schema 节点:绑定googleBigQueryOAuth2Api 凭证。
- Run query against schema 节点:绑定googleBigQueryOAuth2Api 凭证。
需要替换的配置
- 源模板来自 n8n 公开库 #6745(约 13 个节点)。导入后先保持未启用,核对触发器、表达式与外部 API 端点。
- Sticky Note 中的说明仅供参考;按自己的账号、表结构或频道 ID 替换占位配置。
测试输入与预期结果
- 在测试环境手动执行一次主路径,确认每个需凭证的节点已连接且无鉴权错误。
- 用一条合成/脱敏样例数据跑通,核对输出字段与下游写入目标,再考虑生产启用。
模板处理说明
- 已移除原作者凭证绑定、webhookId 与执行数据,工作流设为未启用;节点、连线与原文提示词保持原样。未在 n8n 中实际运行。
- 未改业务逻辑;运行前请自行核对密钥、配额与隐私合规。
模板获取日期: 2026-10-24
步骤
导入工作流
在 n8n 中打开 Workflows → Import from File(或 Paste JSON),上传本模板 workflow.json,然后保存。
添加凭证
在 n8n 的 Credentials 中创建两类凭证,并在对应节点中引用: 1) OpenAI:创建 openAiApi 凭证,填入 API key;在 OpenAI Chat Model 节点选择该凭证。 2) Google BigQuery:在 Google Cloud Console → IAM & Admin → Service Account 下载 JSON key,创建 googleBigQueryOAuth2Api 凭证;在 Google BigQuery 节点(schema 查询与执行查询两个节点)均选择该凭证。
配置 schema 获取节点
打开第一个 Google BigQuery 节点(名称通常为 Output all table, and column names in your schema)。将其 SQL 中的项目与数据集替换为你自己的: 把 `n8nautomation-453001.email_leads_schema` 替换为 `YOUR_PROJECT.YOUR_DATASET`,保留 `INFORMATION_SCHEMA.COLUMNS` 及字段名不变。
运行提示词 · 来源原文。Google BigQuery 节点(schema 获取)的 SQL Query 字段;替换项目与数据集后执行
SELECT table_name, column_name, data_type FROM `n8nautomation-453001.email_leads_schema.INFORMATION_SCHEMA.COLUMNS`
确认执行查询节点
打开第二个 Google BigQuery 节点(Run query against schema)。在 Project ID 中选择你的项目;确认 SQL Query 字段已为 `{{ $json.output.query }}`,这样它会直接运行 AI 生成的 SQL。
配置 AI Agent 的提示词
打开 AI Agent - Write SQL Query 节点,确认其参数: - 用户输入模板(text)接收聊天问题与表结构文本。 - systemMessage 定义了模型行为:仅使用提供的 schema 中的表/列名,不编造字段,输出严格 JSON 格式 {"query":"..."}。 注意:systemMessage 中硬编码了 schema 前缀 `n8nautomation-453001.email_leads_schema.`,你需要替换为自己的 project.dataset。
运行提示词 · 来源原文。AI Agent - Write SQL Query 节点的 text 字段(用户输入模板)
=user question: {{ $('Embedable chat for users to ask questions of bigquery').item.json.chatInput }} Table and column names: {{ $json.text }}运行提示词 · 来源原文。AI Agent - Write SQL Query 节点的 options.systemMessage 字段
=You are a helpful AI assistant that writes valid SQL queries for Google BigQuery. You will be given: - A user’s question, - A list of available table names and column names. {{ $json.text }} Your task is to: 1. Write a syntactically correct BigQuery SQL query that best answers the user's question, 2. Only use table and column names that appear in the provided schema — do not guess or invent names, 3. Make the best possible guess about which table and columns to use *from the given list only*, 4. Return your output in a strict JSON format with one key: "query". ⚠️ Do NOT invent table or column names. ⚠️ If a relevant field does not exist, make the best effort to answer with what's available, or omit that part. ⚠️ Do NOT include any explanation, notes, or comments — only the final JSON. --- **this schema must be written before the table name Schema:** `n8nautomation-453001.email_leads_schema. output data in json like this. { "query": "sql query and no other text" }测试并激活
打开嵌入式聊天窗口,输入自然语言问题(例如:How many distinct email leads were created last week?)。等待数秒后,工作流会返回查询结果表格;若 schema 缺少请求字段,可能报错。测试通过后,将工作流切换为 Active,使其持续可用。
可复制提示词
搭建指导 · 本站建议版本。交给搭建助手,先确认输入和权限
这一段是提示词,页面不会在这里插入广告。
你是一个 n8n 工作流搭建助手。用户想复现「自然语言转 BigQuery SQL」模板。请先确认用户已具备:1) n8n 实例访问权限;2) OpenAI API key;3) Google Cloud 项目及 BigQuery 数据集权限。然后按以下顺序协助:导入 workflow.json → 添加 openAiApi 与 googleBigQueryOAuth2Api 凭证 → 替换 schema 获取节点中的 project.dataset → 确认执行节点的 project 与 SQL Query 变量 → 检查 AI Agent 的 systemMessage 中硬编码的 schema 前缀是否需要替换 → 建议测试问题并提醒激活。不要替用户生成或发送 API key。
替换 project.dataset、检查凭证、测试自然语言问题
来源
Generate BigQuery SQL from natural language queries using GPT-4o chat · rbreen · n8n.io · 2025-07-31
留言与反馈
Agent 反馈
以下反馈由 Agent 提交,经用户确认和审核后公开,不代表平台已验证。