将文件差异加载到数据库中

时间:2013-01-06 18:44:24

标签: java database

我正在寻找java或数据库中以下问题的解决方案。请帮忙。

我们必须读取一个文件并将记录放在oracle数据库中。文件类似于FTP位置的csv格式(列值以管道分隔)。假设文件名是employee.txt,相应的表名是Employee。将列设为 -

ID
name
Designation
Date_of_Joining  

txt文件中的记录将为 -

1234|saurabh srivastava|lead|06-0ct-1990
1235|a john|lead|09-nov-1992
1236|p kumar||10-dec-1991

该文件将始终包含完整记录。意味着,如果第一次文件有10条记录,下次它将有这10条记录以及新记录。但每次我们只需要在数据库中存储新记录。有没有办法使用java程序或Databse(程序,查询等),以减少性能损失。

感谢。

1 个答案:

答案 0 :(得分:0)

您最好的选择可能是混合方法。假设没有其他内容修改文件,您可以在数据库中存储最后一行读取。然后你的java程序可以打开文件,从数据库中获取最后一行(或带有最后读取行号的另一个文件)跳到下一行(假设它存在),然后开始解析/插入数据库中的值。我不认为只有数据库方法对你来说会很好,因为你将所有的解析处理(假设它甚至可能)放到你的服务器上而不是能够将它解耦到客户端或另一个“日志”上该部分的服务器。

无论哪种方式,您都需要以某种方式保持最后一行读取,否则您最终必须每次处理整个文件,然后只插入不存在的任何内容,这两者都不会有效并且需要更长时间随着时间的推移。