假如有一个文件很大,比如1T,现在需要找出内容重复的行。如果用java代码来实现,用缓存肯定是不行的,一般的服务器没有这么多内存。那么如何去做呢?可以利用数据库来处理,方法如下。
创建一个表,有两列,一个是id主键,表示行号,一列是内容content。
-- Create table
create table T_HUGE_FILE
(
ID number,
CONTENT varchar2(1000)
)
;
-- Create/Recreate primary, unique and foreign key constraints
alter table T_HUGE_FILE
add constraint PK_T_HUGE_FILE primary key (ID);
逐行读取文件并保持到数据库中。
然后通过sql语句查询出重复的行及内容。
select id, content from t_huge_file where id not in
(select min(id) from t_huge_file group by content)