以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请问导入多个文本文件到表中的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=189571) |
-- 作者:百事可乐 -- 发布时间:2023/12/9 11:34:00 -- 请问导入多个文本文件到表中的问题 老师好 现需要多次导入不同的文本文件(内部字段是不一样的,各自都有schema.ini文件)到项目中。为了在后期能统一使用相同的表名称“DaoRu”,所以想到了,每次import后,对这个“DaoRu”表处理完成后就把它删除了,以便下次再次导入。 现在出现许多问题,要么就是import后显示“DaoRu”表已存在,要么提示“~TMPCLIPDaoRu”已存在。直接删除它又不行,试过多个方法了,后来又用到数据合并来实现,但运行时间太长了不能实用,最后还是想回到import上来。 有什么办法吗? |
-- 作者:有点蓝 -- 发布时间:2023/12/9 11:54:00 -- import后会生成一个真实的内部数据表,也不适合重复的删除再导入。建议还是使用合并的方式,【运行时间太长了不能实用】具体有什么问题? |
-- 作者:百事可乐 -- 发布时间:2023/12/9 12:19:00 -- 收到,谢谢“有点蓝”老师的建议。 合并数据的方式,因为每一行有大量的字段(一般情况都会有200个以上的字段,虽然其中有较多存放的是空值),所以,以Tab或,或&分隔后,再用split转到数组,只要有2千行以上,合并到表的每次的运行时间就达到了半分钟以上,这个情况用户等待太久,所以不太实用了。 ----不知道啊有什么好一些的办法可以解决。 (原项目是有一个各种繁杂计算得到的表,它涉及多个设定、选择条件,有时数据量大的时候,会用去较长时间得到这个表结果的。所以想做个导出,把它的内容直接保存起来,下次使用的时候,检测有没有同样的条件,有就直接把它导入进来 使用,以实现加快速度的目的。 考虑过几种保存方法,如直接导到sql中去的,但sql本身就承担了较重的计算和存储任务还被其它用户多种查询,不能再给它加担子了 : ,再说,因为字段不一定相同,送入sql也不太好处理,所以想了个折中的办法,把它导出到文本文件,下次再使用时再直接从文本文件中导进来,但又碰到了运行时间太长的问题 。很伤脑子的。 )
[此贴子已经被作者于2023/12/9 12:21:18编辑过]
|
-- 作者:有点蓝 -- 发布时间:2023/12/9 13:50:00 -- 建议还是保存到数据库。不知道您的数据库有多大,人家几百G的数据库上万人访问照样正常使用。数据库不怕加担子,除非设计的不合理。 学会优化数据库:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=158943&replyID=&skin=1
|
-- 作者:百事可乐 -- 发布时间:2023/12/9 21:42:00 -- 收到,感谢“有点蓝”老师的建议。我准备转存到数据库试试。 准备执行步骤: 保存: 1、将通过各种设定得到的窗口表的字段取出,用在数据库中使用 ADOXBuilder 创建拥有这些字段的表和数据结构;(每次这个表的字段,有部分是相同的,其它的字段数量和名称都是不相同的,所以每次都要新建表结构的) 2、设定循环,读取窗口表记录后,insert 到数据库表中去。统一使用事务方式提交,以提高效率。 读取: 1、判断数据库中是否存在指定表 2、如不存在就按设定的条件计算得到窗口表中的数据记录,并保存到数据库中去; 如存在就直接fill到窗口表中来,直接使用; --------------------------------------------------- 以上方法应该是可行的,但@有点蓝老师,有没有更加直接的方法,比如直接将"窗口1_table1"全表(连字段和记录)直接一步到位保存到数据库中去(数据库中当时是不存在这个表的)?
|