使用索引列(第一个字段)

时间:2017-04-07 18:52:28

标签: unix solaris

我在Unix(Solaris)中有两个巨大的平面文件,每个文件大约有500-600 GB。我需要使用第一列连接并将2个文件合并到一个平面文件中,该列将是一个关键索引列。我怎么能以优化的方式做到这一点?

基本上它应该是2个平面文件之间的内部联接。尝试使用平面文件的原因是,我们有一个2个巨大的表被分成2个单独的表,并且被提取到2个平面文件中,我试图在Unix级别而不是在数据库级别加入它。

我确实使用了以下命令:

sort -n file1 > file_temp1;
sort -n file2 > file_temp2;
join -j 1 -t';' file_temp1 file_temp2 > Final

排序正常,因为第一个字段是索引列。但是当连接发生时,我在Final文件中几乎没有2%的数据。所以只是想了解我在join命令中做了什么错误?这两个文件都包含大约.2百万条记录,并且所有记录在2个文件之间匹配。如果在unix上进行的连接比在数据库级别执行的连接更好,我想要进行性能检查。抱歉,问题不完整!第一个字段是数字索引字段。我们有类似“-n”开关的东西来指示第一个字段是数字索引的连接吗?

1 个答案:

答案 0 :(得分:0)

您应 sort -n,因为加入时没有相应的-n标记。只需保留所有前导/尾随空格:

#!/bin/sh

sort -t';' -k 1 file1 > file1.srt
sort -t';' -k 1 file2 > file2.srt

join -t';' -1 1 -2 1 file1.srt file2.srt > both

#cat both