Foxtable(狐表)用户栏目专家坐堂 → 请问导入多个文本文件到表中的问题


  共有2480人关注过本帖树形打印复制链接

主题:请问导入多个文本文件到表中的问题

帅哥哟,离线,有人找我吗?
百事可乐
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:38 积分:554 威望:0 精华:0 注册:2019/4/21 8:51:00
请问导入多个文本文件到表中的问题  发帖心情 Post By:2023/12/9 11:34:00 [只看该作者]

老师好
    现需要多次导入不同的文本文件(内部字段是不一样的,各自都有schema.ini文件)到项目中。为了在后期能统一使用相同的表名称“DaoRu”,所以想到了,每次import后,对这个“DaoRu”表处理完成后就把它删除了,以便下次再次导入。
    现在出现许多问题,要么就是import后显示“DaoRu”表已存在,要么提示“~TMPCLIPDaoRu”已存在。直接删除它又不行,试过多个方法了,后来又用到数据合并来实现,但运行时间太长了不能实用,最后还是想回到import上来。
    有什么办法吗?



 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/9 11:54:00 [只看该作者]

import后会生成一个真实的内部数据表,也不适合重复的删除再导入。建议还是使用合并的方式,【运行时间太长了不能实用】具体有什么问题?

 回到顶部
帅哥哟,离线,有人找我吗?
百事可乐
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:38 积分:554 威望:0 精华:0 注册:2019/4/21 8:51:00
  发帖心情 Post By:2023/12/9 12:19:00 [只看该作者]

收到,谢谢“有点蓝”老师的建议。

合并数据的方式,因为每一行有大量的字段(一般情况都会有200个以上的字段,虽然其中有较多存放的是空值),所以,以Tab或,或&分隔后,再用split转到数组,只要有2千行以上,合并到表的每次的运行时间就达到了半分钟以上,这个情况用户等待太久,所以不太实用了。
----不知道啊有什么好一些的办法可以解决。

(原项目是有一个各种繁杂计算得到的表,它涉及多个设定、选择条件,有时数据量大的时候,会用去较长时间得到这个表结果的。所以想做个导出,把它的内容直接保存起来,下次使用的时候,检测有没有同样的条件,有就直接把它导入进来 使用,以实现加快速度的目的。
考虑过几种保存方法,如直接导到sql中去的,但sql本身就承担了较重的计算和存储任务还被其它用户多种查询,不能再给它加担子了 : ,再说,因为字段不一定相同,送入sql也不太好处理,所以想了个折中的办法,把它导出到文本文件,下次再使用时再直接从文本文件中导进来,但又碰到了运行时间太长的问题 。很伤脑子的。 )
[此贴子已经被作者于2023/12/9 12:21:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110574 积分:562760 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/12/9 13:50:00 [只看该作者]

建议还是保存到数据库。不知道您的数据库有多大,人家几百G的数据库上万人访问照样正常使用。数据库不怕加担子,除非设计的不合理。

学会优化数据库:http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=158943&replyID=&skin=1

 回到顶部
帅哥哟,离线,有人找我吗?
百事可乐
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:38 积分:554 威望:0 精华:0 注册:2019/4/21 8:51:00
  发帖心情 Post By:2023/12/9 21:42:00 [只看该作者]

收到,感谢“有点蓝”老师的建议。我准备转存到数据库试试。

准备执行步骤:
保存:
1、将通过各种设定得到的窗口表的字段取出,用在数据库中使用 ADOXBuilder 创建拥有这些字段的表和数据结构;(每次这个表的字段,有部分是相同的,其它的字段数量和名称都是不相同的,所以每次都要新建表结构的)
2、设定循环,读取窗口表记录后,insert 到数据库表中去。统一使用事务方式提交,以提高效率。
读取:
1、判断数据库中是否存在指定表
2、如不存在就按设定的条件计算得到窗口表中的数据记录,并保存到数据库中去;
   如存在就直接fill到窗口表中来,直接使用;
---------------------------------------------------
以上方法应该是可行的,但@有点蓝老师,有没有更加直接的方法,比如直接将"窗口1_table1"全表(连字段和记录)直接一步到位保存到数据库中去(数据库中当时是不存在这个表的)?

 回到顶部