78

A-nodes_to_deleteB-の 2 つのファイルがありますnodes_to_keep。各ファイルには、数値 ID を持つ多くの行があります。

nodes_to_deleteにあるが含まれていない数値IDのリストが必要nodes_to_keepです代替テキスト

PostgreSQL データベース内でこれを行うと、非常に遅くなります。Linux CLI ツールを使用して bash でそれを行う適切な方法はありますか?

更新:これは Python の仕事のように見えますが、ファイルは非常に大きいです。uniqsortおよびいくつかの集合論手法を使用して、いくつかの同様の問題を解決しました。これは、同等のデータベースよりも約 2 ~ 3 桁高速でした。

4

7 に答える 7

116

commコマンドはそれを行います。

于 2010-03-24T16:45:38.510 に答える
52

誰かが数ヶ月前にshでこれを正確に行う方法を教えてくれましたが、しばらくの間それを見つけることができませんでした...そして見ている間、私はあなたの質問に出くわしました。ここにあります :

set_union () {
   sort $1 $2 | uniq
}

set_difference () {
   sort $1 $2 $2 | uniq -u
}

set_symmetric_difference() {
   sort $1 $2 | uniq -u
}
于 2012-10-23T19:57:24.183 に答える
1

Postgres でそれを行うためのより良い方法が必要かもしれませんが、フラット ファイルを使用してそれを行うためのより高速な方法が見つからないことはほぼ間違いありません。単純な内部結合を実行できるはずであり、両方の id 列が非常に高速にインデックス化されていると仮定します。

于 2010-03-24T16:50:15.850 に答える