sybn sybn-util 项目说明文档 - 基于java的跨数据库联合查询

builderInsert(...) 将结果集转换为 INSERT INTO 语句

2026-07-20
sybn
sql

  • 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');

注意事项

  1. builderInsert 生成的是 SQL 文本,不是执行 INSERT,需要把生成的语句拿到目标库执行。
  2. 表名固定为 table,需要自行替换为实际表名(或用第一个字段值作为表名)。
  3. null 值会被转换为 NULL,字符串会被单引号包裹。

Comments

暂不开放评论! 可微信联系