15 ~ 20 GB の巨大なデータ セットがあり、それはタブ区切りのファイルです。私はPythonまたはSQLでそれを行うことができますが、csvファイルの移動を避けるためにシェルスクリプトで行う方が簡単で簡単です.
たとえば、パイプ区切りのファイル入力を取得するとします。
----------------------------------------
Col1 | Col2 | Col3 | Col4 | Col5 | Col6
----------------------------------------
A | H1 | 123 | abcd | a1 | b1
----------------------------------------
B | H1 | 124 | abcd | a2 | b1
----------------------------------------
C | H2 | 127 | abd | a3 | b1
----------------------------------------
D | H1 | 128 | acd | a4 | b1
----------------------------------------
SQLクエリは次のようになります
SELECT Col1、Col4、Col5、Col6 FROM WHERE col2='H1'
出力:
--------------------------
Col1 | Col4 | Col5 | Col6
--------------------------
A | abcd | a1 | b1
--------------------------
B | abcd | a2 | b1
--------------------------
D | acd | a4 | b1
--------------------------
次に、これの Col4 のみを取り込んで、文字列の解析を行い、OutputFile1 の下に出力する必要があります。
--------------------------------
Col1 | Col4 | Col5 | Col6 | New1
--------------------------------
A | abcd | a1 | b1 | a,b,c,d
--------------------------------
B | abcd | a2 | b1 | a,b,c,d
--------------------------------
D | acd | a4 | b1 | a,c,d
--------------------------------
Col4 は URL です。URL パラメータを解析する必要があります。質問を参照 -シェル スクリプトで URL パラメータを解析する方法
そして、私が持っている別のファイルがあるかどうか知りたいです
ファイル 2 :
--------------
ColA | ColB |
--------------
A | abcd |
--------------
B | abcd |
--------------
D | qst |
--------------
ColB に対して同様の解析済み出力を生成する必要があります。
出力ファイル 2:
--------------
ColA | ColB | New1
--------------
A | abcd | a,b,c,d
--------------
B | abcd | a,b,c,d
--------------
D | qst | q,s,t
--------------
OutputFile1 と OutputFile2 をマージする SQL クエリは、内部結合を実行します。
OutputFile1.Col1 = OutputFile2.ColA および OutputFile1.New1 = OutputFile2.New1
最終出力:
--------------------------------
Col1 | Col4 | Col5 | Col6 | New1
--------------------------------
A | abcd | a1 | b1 | a,b,c,d
--------------------------------
B | abcd | a2 | b1 | a,b,c,d
--------------------------------
同じことを実装するための提案を共有してください。
主な制約はファイルのサイズです。
ありがとう