找回密码
 立即注册

QQ登录

只需一步,快速开始

ngqj

银牌会员

271

主题

742

帖子

2831

积分

银牌会员

积分
2831
ngqj
银牌会员   /  发表于:2021-11-2 22:09  /   查看:1654  /  回复:5
20金币
遇到了个问题,先导入EXCEL数据,然后需要把数据立即处理后再保存到数据库里。
由于数据量较大,正式单次可能上万行,目前测试数据有1000多条,如果直接在表格里写公式,打开表格的时间太慢。
后来就直接用了数据库更新操作,公式都正常设置了,但很奇怪的是所有行的数据都变为它所在的第一行数据了。
期望大佬指导下原因。
demo和EXCEL样表都附件上传了。
主要的公式如图,就是个简单的IF函数,判断一些无效值直接清空。

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,这个更新为第一行的原因是,这样直接更新其实是没有循环整个表格的,由于表格的当前行默认为一,所以所有的公式都会用表格中第一行的数据来做判断。也就是说这个公式的逻辑是:判断每一列第一行的值是否满足OR中的条件,如果满足,整列更新为“”,如果不满足,整列更新为表格中第一行的值。 但是像您这种数据量的话,如果直接在前端逐行循环处理的话会比较慢,对性能影响较大。 针对这个场景,我想到以下几种处理方式 ...

5 个回复

倒序浏览
最佳答案
最佳答案
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-2 22:09:06
来自 2#
您好,这个更新为第一行的原因是,这样直接更新其实是没有循环整个表格的,由于表格的当前行默认为一,所以所有的公式都会用表格中第一行的数据来做判断。也就是说这个公式的逻辑是:判断每一列第一行的值是否满足OR中的条件,如果满足,整列更新为“”,如果不满足,整列更新为表格中第一行的值。

但是像您这种数据量的话,如果直接在前端逐行循环处理的话会比较慢,对性能影响较大。

针对这个场景,我想到以下几种处理方式,您可以根据您的情况选择比较适合您的:
1.如果您使用的是外联库,建议您通过调用存储过程来处理数据,您可以在数据库中先写好对应逻辑的存储过程,将EXCEL数据导入到数据表后,再通过存储过程调用命令调用这个存储过程来完成数据的处理。这样速度比较快,而且数据是在后端处理的,不会影响您前端页面的操作。
存储过程调用命令 - 活字格V7帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)

2.在EXCEL的列中提前写好公式,先将数据在EXCEL中通过公式处理后再导入;

3.通过条件命令,将每一列分开处理,先通过多个条件命令分别判断每一列的第一行数据是否满足OR中的条件,如果满足,则更新这一列中的所有数据,如果不满足,则不做任何操作。您可以给表格设置松绑订,然后通过表格操作命令来实现,处理完所有列中的数据时再提交表格到数据库,这样会比直接通过数据库操作命令更新数据库性能更好一些。
回复 使用道具 举报
ngqj
银牌会员   /  发表于:2021-11-3 11:47:55
3#
1、由于外联库导入数据EXCEL数据很慢,所以用的内建库。
2、EXCEL先处理好不具备实操性。
3、a.由于每一列基本都存在不满足条件需要处理的数据,所以每列还是需要操作。b、松绑定、表格操作的更新和提交表格都用了,过去了10分钟,页面还在转圈圈。
还有没有其他大招?大佬
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-3 12:20:02
4#
ngqj 发表于 2021-11-3 11:47
1、由于外联库导入数据EXCEL数据很慢,所以用的内建库。
2、EXCEL先处理好不具备实操性。
3、a.由于每一 ...

大佬,我看您不是说这个要处理的数据都是整列出现的吗?

我看您示例数据中也是这样的呀,是我理解的有什么问题吗

这样的话为什么“每一列基本都存在不满足条件需要处理的数据”呢?我理解您这个数据中data2、3、4这几列经过判断,第一行数据就不满足OR中的条件,就不需要处理的呀。

如果您用的内置库,您也可以通过执行SQL命令来更新,原理和存储过程类似,性能也是要比直接在前端处理好:
执行SQL命令 - 活字格V7帮助手册 - 葡萄城产品文档中心 (grapecity.com.cn)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ngqj
银牌会员   /  发表于:2021-11-3 12:48:17
5#
这次只是样表,下次的表格就可能其他列的也有不满足的数据。
并且就这次的表其实  2  3  4列也有不满足的,就像你截图中底色为红色的,因为数值在+-3以外,也需要处理成空。
估计只有玩玩存储过程或者SQL命令了
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-11-3 16:28:27
6#
ngqj 发表于 2021-11-3 12:48
这次只是样表,下次的表格就可能其他列的也有不满足的数据。
并且就这次的表其实  2  3  4列也有不满足的 ...

是的呢,如果是这样的话,最好是用SQL命令或者存储过程来处理的~
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部