mysql - 如何进行低 RAM 全交叉连接?

原文 标签 mysql unix memory awk cross-product

我希望在点的大型数据文件上执行完全自交叉连接。但是,我无法使用编程语言来执行操作,因为我无法将其存储在内存中。我想找到集合中的所有点组合。下面是我的数据集的一个例子。

x y 
1 9 
2 8 
3 7 
4 6 
5 5 

我想对这些数据进行交叉连接以生成包含所有点组合的 25 行表。会有低内存解决方案吗?也许与 awk ?

谢谢,

尼古拉斯·海登

附言我是一个新手程序员。

最佳答案

也许分两步,创建一个标题,column1 和 column2 文件,并加入 column1 和 column2 并附加到头文件

awk 'NR==1{print > "cross"} NR>1 {print $1 > "col1"; print $2 > "col2"}' file
join -j9 col1 col2 -o1.1,2.1 >> cross
rm col1, col2

显然要确保临时文件名和最终文件名不会与现有文件名冲突。

请注意,join MacOS 上的命令没有 -j选项,因此将其更改为等效的长格式
join -19 -29 col1 col2 -o1.1,2.1 >> cross

在这两种选择中,我们都要求 join 使用不存在的第 9 个字段作为键,它将第一个文件的每一行与第二个文件的每一行匹配,以生成两个文件的叉积。

关于mysql - 如何进行低 RAM 全交叉连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43422037/

相关文章:

mysql - mysql需要很长时间才能获得sum()

c - C:如何格式化结构?

使用包装函数调用 Malloc

php - Laravel 使用相等运算符查询 MySQL JSON 列

mysql - 在 MySQL 中获取特定乐队的所有专辑

php - 如何为每一行计算连接中的所有实例?

macos - Fish Interactive Shell 完整路径

matlab - 如果最初保存在 UNIX 中,如何在 windows 中加载 matlab 文件 (.mat)

linux - oom-killer杀死Docker中的Java应用程序-报告内存使用不匹配

c++ - 内存分配/解除分配?