如何从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
相关产品推荐
相关产品推荐

