在Domino中用java代理将excel文件导入到关系数据库中,现在遇到一个问题不知如何解决,麻烦大家帮我想想。
是这个的:
数据库中每条数据必须保证唯一,如果一个文件重复导入的话(在不知情的情况下),如何判断该文件中的数据已经存在了。注:excel中的文件没有唯一性标识。
不知大家有没有好的意见或者建议,谢谢!
------解决方案--------------------
那你从主观上,怎么判断两个数据时重复的?总得有一个字段吧。
------解决方案--------------------
有个疑问,是否将excel作为二进制流保存到数据库中还是将excel中的字段内容保存到数据库中,这个会有本质的区别,第二个,其实很简单只要找到主键即可,如果是第一个,那难度就稍微大点,没有做过二进制的比较,所以也不清楚是否能比较,而且如果文件量较大,这会是个比较长时间的运行过程。
------解决方案--------------------
既然是将excel字段保存到数据库中,且在excel中没有主键,那就没啥好办法了,建议在导入到关系型数据库前转存到domino中,然后再做处理。如果直接存储的话,就得在插入之前按照全字段在关系型数据库中查询一次,这种效率我觉得是非常低的~
------解决方案--------------------
那你可以在Excle里自己挑选一些关键字段导入的时候组合这些字段值为一个隐藏的关键字保存到文档里,每次导入前计算出这个值,然后与已经存在的做比较不就知道是否重复了,当然你得选好那些关键字段。
------解决方案--------------------
没太懂你的意思~~你的意思是不是你有多个excel文件啊?然后将excel文件中的内容导入到关系型数据库中?你是要检查excel中的内容是否有重复,还是excel文件是否重复导入过?
前者,excel里的字段,必须有唯一性,就算是内容也可以,或者你干脆在excel里整理好唯一性,直接导
后者的话,没有必要用程序来控制吧,只是做事的方法不当,你可以将excel命名改为不同的啊
如果想判断不同excel中的字段是否有重复导入过关系型数据库,那么就还是需要有唯一性的字段,每次导入时,先去select,如果查到则不导入,如果没查到则导入,就是效率低了不少