【发布时间】:2011-09-29 21:58:36
【问题描述】:
我有一个用竖线分隔的平面文件和一个数据库表。我想创建一个包含平面文件和数据库之间所有差异的第二个平面文件。
例如,如果数据库中存在平面文件中不存在的条目,则整行将打印在第二个平面文件中(平面文件中永远不会有不在数据库中的条目)。另一个示例是,如果行相似但字段存在差异,则数据库条目将打印在平面文件中。
我能想到的最好方法是创建 2 个二维数组,其中包含来自平面文件和数据库的数据,如果平面文件数组中不存在主键,则从选择语句。如果主键确实存在但其他字段不存在,则从 select 语句中打印出结果。这是我能想到的最好的事情,但它似乎效率低下。
有没有更好的方法来做到这一点?我正在使用 Java 来执行此操作。
【问题讨论】:
-
大多数数据库都具有直接读取文件的功能——整个操作可以通过 SQL 完成,并且比应用程序语言具有更好的扩展性。
-
你在说什么数据量,源文件是有序的吗?如果可以从数据库访问平面文件,我倾向于使用 SQL/外部表解决方案。如果数据量很小,java 可以解决问题。
标签: java database oracle flat-file