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

如何从Google Sheet生成批量UPSERT风格SQL语句?

从Google Sheet生成UPSERT SQL语句方案

一、需求说明

我有如下结构的Google Sheet表格:

ID | City | Capital | Country

5 | Paris | Yes | France
8 | Madrid| Yes | Spain

需要为每一行数据生成更新优先、不存在则插入的SQL代码(语法修正后格式如下),最终拼接成可直接执行的SQL文件:

update database set city='Paris', Country='France' where id=5;
IF @@ROWCOUNT=0
   insert into database(city,country) values('Paris','France');

二、快速生成SQL的方法

1. 在Google Sheet中用公式批量生成

在表格空白列(比如E列)的E2单元格输入以下公式,下拉填充即可为每一行生成对应SQL片段:

="update database set city='"&B2&"', Country='"&D2&"' where id="&A2&";
IF @@ROWCOUNT=0
   insert into database(city,country) values('"&B2&"','"&D2&"');
"

公式说明:

  • 用&拼接文本与单元格内容
  • 字符串类型的字段值用单引号包裹,数字类型的ID直接拼接
  • 修正了原示例中update语句的语法错误(多字段用逗号分隔,而非and)

2. 导出拼接为SQL文件

  • 选中生成的所有SQL内容复制
  • 粘贴到记事本/文本编辑器中
  • 保存为.sql后缀的文件,即可直接用于数据库执行

三、最终生成的完整SQL代码

update database set city='Paris', Country='France' where id=5;
IF @@ROWCOUNT=0
   insert into database(city,country) values('Paris','France');

update database set city='Madrid', Country='Spain' where id=8;
IF @@ROWCOUNT=0
   insert into database(city,country) values('Madrid','Spain');

注意事项

如果City或Country字段包含单引号(如O'Neil),需要在公式中处理转义,将B2替换为SUBSTITUTE(B2,"'","''"),D2同理,避免SQL语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:31:01