Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unix 在Solaris中使用索引列(第一个字段)合并(加入)2个大型平面文件_Unix_Solaris - Fatal编程技术网

Unix 在Solaris中使用索引列(第一个字段)合并(加入)2个大型平面文件

Unix 在Solaris中使用索引列(第一个字段)合并(加入)2个大型平面文件,unix,solaris,Unix,Solaris,我在Unix(Solaris)中有两个巨大的平面文件,每个文件大约有500-600GB。我需要使用第一列,也就是键索引列,将这两个文件合并成一个平面文件。我怎样才能以优化的方式完成它 基本上,它应该是两个平面文件之间的内部连接。尝试使用平面文件的原因是,我们有一个2个巨大的表,它被拆分为2个单独的表,并被提取为2个平面文件,我尝试在Unix级别而不是数据库级别连接它 我确实使用了以下命令: sort -n file1 > file_temp1; sort -n file2 > fil

我在Unix(Solaris)中有两个巨大的平面文件,每个文件大约有500-600GB。我需要使用第一列,也就是键索引列,将这两个文件合并成一个平面文件。我怎样才能以优化的方式完成它

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

我确实使用了以下命令:

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

它与sort配合使用,因为第一个字段是索引列。然而,当连接发生时,我在最终文件中几乎没有得到2%的数据。所以我只是想了解我在join命令中犯了什么错误?这两个文件都包含大约120万条记录,并且所有记录都在这两个文件之间匹配。我想进行一次性能检查,看看在unix上进行的连接是否比在数据库级别执行的连接更好。对不起,问题不完整!第一个字段是数字索引字段。我们是否有一个类似于“-n”的开关来指示联接的第一个字段是数字索引?

您应该而不是
排序-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

优化方法?不要将平面文件用于TB级的数据。如果有那么多的数据,将数据加载到数据库中以将数据合并到单个排序的输出中会快得多。数据库设计用于处理如此多的数据。诸如
awk
sort
之类的命令行工具实际上不是。OP仅说明第一列是索引,因此
cat file1 file2>newfile
是一种合并它们的方法。对于其他要求,他应该编辑他的问题。对不起,是的,问题不完整,添加了更多信息。非常感谢您的帮助!什么样的加入?(左/右/满…)两个表中是否都有键?两个表中的所有键都是唯一的吗?这只是一个简单的内部联接,是的,所有键都存在于两个文件中,所有键都是唯一的。这两个文件都有大约120万条记录,记录数完全相同,所有的键都已排序。我刚刚试过。谢谢,是的,一个错误是因为join没有-n,所以不应该在排序时使用-n。我今天早上确实试过了。但实际上仍然没有得到100%的数据。当然,我这里有所有的钥匙,因为这两张桌子我已经加入了几天,100%匹配。所以我无法理解我到底遗漏了什么。很可能是两个文件之间的空白差异。甚至键中的前导零。是的,我一直在分析文件集,没有前导零或空格。但因为我觉得在这种情况下肯定会有一些问题。我接受你的回答。谢谢你的时间!!!