- content
说明
builderInsert(...) 用于将前一条 sql 的结果集转换为标准的 INSERT INTO table(字段...) VALUES (值...) 语句。
常用于:把查询结果导出为可执行的 SQL 脚本,或者在不支持跨库直连的场景下,先生成 INSERT 语句再在目标库执行。
语法
select ...; builderInsert([表名或字段列表])
- 不传参数:使用结果集的所有字段作为列名,表名占位为
table。 - 传一个字段名:该字段的值作为表名,其余所有字段作为列。
- 传多个字段名:以这些字段作为列(其余字段忽略)。
中文等非标准字段名会自动用反引号
`包裹。
例子
-- 不传参数:所有字段作为列,表名占位为 table
select * from [{a:'tab1', b:1, c:null}];
builderInsert();
-- 输出:INSERT INTO table(a,b,c) VALUES ('tab1',1,NULL);
-- 传一个字段:用 a 字段的值作为表名
select * from [{a:'tab1', b:1, c:null}];
builderInsert(a);
-- 输出:INSERT INTO table(a) VALUES ('tab1');
-- 中文字段名自动加反引号
select * from [{'大':'tab1', b:1, c:null}];
builderInsert();
-- 输出:INSERT INTO table(`大`,b,c) VALUES ('tab1',1,NULL);
-- 指定中文字段名
select * from [{'大':'tab1', b:1, c:null}];
builderInsert(大);
-- 输出:INSERT INTO table(`大`) VALUES ('tab1');
注意事项
builderInsert生成的是 SQL 文本,不是执行 INSERT,需要把生成的语句拿到目标库执行。- 表名固定为
table,需要自行替换为实际表名(或用第一个字段值作为表名)。 - null 值会被转换为
NULL,字符串会被单引号包裹。