列段1 列段2为库里的主键 我希望导入的时候根据主键判断是否在库里有重复值 如果有重复值就导入失败 没有的话就导入成功 这种该怎么实现?
JS校验填报值是否在数据库中存在-https://help.fanruan.com/finereport/doc-view-4548.html
联立多字段校验是否与数据库中数据重复-https://help.fanruan.com/finereport/doc-view-3032.html
与数据库中数据对比校验-https://help.fanruan.com/finereport/doc-view-566.html
实现Excel导入时根据联合主键校验数据重复性的方法如下:
确保目标表的联合主键(列段1+列段2)已设置唯一约束,数据库会自动拦截重复数据提交
插件配置:
勾选「主键」选项时,插件会自动识别联合主键字段
导入模式选择「覆盖」或「追加」时,主键重复的数据会被拦截
注意事项:
StarRocks数据库需手动修改字段长度:ALTER TABLE fine_plugin_excel MODIFY COLUMN extraProps VARCHAR(20000)
部分数据库(如StarRocks)驱动可能不显示主键提示,但实际提交会因唯一约束失败
若需在导入前预校验,可在填报模板中添加以下设置:
提交校验公式:
GREPARRAY(数据集, 列段1==A1 && 列段2==B1).length == 0
返回true表示无重复,false则阻止提交
扩展数据校验:
对扩展格使用数组函数遍历判断重复值
使用「填报调试插件」查看提交时的数据过滤情况
检查调试日志中的主键重复提示(如下图)
首选:通过数据库唯一约束强制拦截(最可靠)
次选:插件主键配置 + 覆盖导入模式
补充:填报模板预校验公式
使用sql函数和报表属性里的数据校验实现。我写一下大概意思哈。在D2单元格里写
=SQL("数据连接","select 列3 from 表名 where 列名1 ="+A2+'' AND 列名2 = "+B2,1,1)
这里SQL函数我可能写的不对,请再检查下哈。
然后将D2单元格设置插入行策略,原值。
然后在报表填报属性里的数据校验,写len(D2) !=0 ,如果不符合这个公式,就提示,库中已有数据