k=パラメータで指定した入力ファイルの項目値と参照ファイルの項目値を比較し、 同じ値の場合m=パラメータで指定した参照ファイルにある f=パラメータで指定した項目値を自然結合する。 mjoinコマンドとの違いは、参照ファイル上のキー項目に重複があってもよい点である。 あるキー値について、入力ファイル上に件、参照ファイル上に
件のレコードがあった場合、
件のレコードが出力されることになる。 また、f=を省略すると、参照ファイルのキー項目以外全ての項目を結合する。
mnjoin k= [f=] [K=] [-n] [-N] m=| i= [o=] [bufcount=] [-assert_diffSize] [-assert_nullkey] [-assert_nullin] [-assert_nullout] [-nfn] [-nfno] [-x] [-q] [tmpPath=] [--help] [--helpl] [--version]
k= |
入力データ上の突き合わせる項目名リストを指定する。 |
ここで指定した入力データの項目とK=パラメータで指定された |
|
参照データの項目が同じ行の項目結合が行われる。 |
|
f= |
結合する参照ファイル上の項目名リストを指定する。 |
省略するとキー項目を除いた全ての項目が結合される。 |
|
m= |
参照ファイル名を指定する。 |
このパラメータが省略された時には標準入力が用いられる。(i=指定ありの場合) |
|
K= |
参照データ上の突き合わせる項目名リスト |
ここで指定した参照データの項目とk=パラメータで指定された 入力データの項目が同じ行の項目結合が行われる。 |
|
参照データ上にk=パラメータで指定した入力データ上の 項目と同名の項目が存在する場合は指定する必要はない。 |
|
-n |
参照データにない入力データをNULL値として出力するフラグ。 |
-N |
入力データにない参照データをNULL値として出力するフラグ。 |
入力ファイルにあるitem項目と、 参照ファイルにあるitem項目を比較し同じ値の場合、cost項目を結合する。 入力ファイル、参照ファイル共にitem=Aが2行あり、結果、出力ファイルには22=4行のitem=Aが出力されている。
$ more dat1.csv item,date,price A,20081201,100 A,20081213,98 B,20081002,400 B,20081209,450 C,20081201,100 $ more ref1.csv item,cost A,50 A,70 B,300 E,200 $ mnjoin k=item f=cost m=ref1.csv i=dat1.csv o=rsl1.csv #END# kgnjoin f=cost i=dat1.csv k=item m=ref1.csv o=rsl1.csv $ more rsl1.csv item%0,date,price,cost A,20081201,100,50 A,20081201,100,70 A,20081213,98,50 A,20081213,98,70 B,20081002,400,300 B,20081209,450,300
-nを指定することで、参照ファイルにマッチしない入力ファイルの行(item="C"の行)も出力し、 -Nを指定することで、入力ファイルにマッチしない参照ファイルの行(item="E"の行)も出力する。
$ more ref2.csv item,cost A,50 B,300 E,200 $ mnjoin k=item f=cost m=ref2.csv -n -N i=dat1.csv o=rsl2.csv #END# kgnjoin -N -n f=cost i=dat1.csv k=item m=ref2.csv o=rsl2.csv $ more rsl2.csv item%0,date,price,cost A,20081201,100,50 A,20081213,98,50 B,20081002,400,300 B,20081209,450,300 C,20081201,100, E,,,200
mjoin : 参照ファイルのキーが単一化されているのであればmjoinを使うと若干高速。
mproduct : 結合キー関係なく全行の組み合せで結合する。1行だけからなる参照ファイルを入力ファイル全行に結合する目的で利用することが多い。