IDとメールの2つのフィールドを持つ1つのCSVファイルがあるとします。電子メールと名前の2つのフィールドを持つ別のファイルがあります。3つのフィールドすべてを電子メールで結合したファイルを作成するにはどうすればよいですか?
IDとメールの2つのフィールドを持つ1つのCSVファイルがあるとします。電子メールと名前の2つのフィールドを持つ別のファイルがあります。3つのフィールドすべてを電子メールで結合したファイルを作成するにはどうすればよいですか?
回答:
改訂3:
メールの両方のリストをアルファベット順に並べ替えてから参加する必要があります。電子メールフィールドがfile1の2番目のフィールドとfile2の1番目のフィールドである場合:
sort -t , -k 2,2 file1.csv > sort1.csv
sort -t , -k 1,1 file2.csv > sort2.csv
join -t , -1 2 -2 1 sort1.csv sort2.csv > sort3.csv
パラメータの意味
-t、: '、'はフィールド区切り記号です -k 2,2:2番目のフィールドでの文字ソート -k 1,1:1番目のフィールドでの文字ソート -1 2:ファイル1、2番目のフィールド -2 1:ファイル2、1番目のフィールド >:ファイルへの出力
生産する
メール、ID、名前 メール、ID、名前 ...
メールでアルファベット順にソートされています。
いずれかのファイルからメールが欠落している場合、結果から除外されることに注意してください。
おそらくやり過ぎかもしれませんが、2種類のテーブルとしてデータベース(OpenOffice Baseなど)にインポートし、目的の出力であるレポートを定義できます。
CSVのインポートに問題がある場合は、スプレッドシートプログラム(OpenOffice Calcなど)でインポートできます。その後、結果をデータベースに簡単に転送できます。
将来の参考として、AWKで遊んでみてください。それは、すべての* nixシステムに何らかの形で存在する非常に単純な小さなスクリプト言語であり、その唯一の使命は、標準の区切られたテキストデータベースの操作です。数行の使い捨てスクリプトを使用すると、非常に便利なことができます。この言語は小さくてエレガントで、私が知っている他のものよりも有用性/複雑さの比が優れています。
Goを使用:https : //github.com/chrislusf/gleam
package main
import (
"flag"
"os"
"github.com/chrislusf/gleam"
"github.com/chrislusf/gleam/source/csv"
)
var (
aFile = flag.String("a", "a.csv", "first csv file with 2 fields, the first one being the key")
bFile = flag.String("b", "b.csv", "second csv file with 2 fields, the first one being the key")
)
func main() {
flag.Parse()
f := gleam.New()
a := f.Input(csv.New(*aFile))
b := f.Input(csv.New(*bFile))
a.Join(b).Fprintf(os.Stdout, "%s,%s,%s\n").Run()
}
CSV Cruncherをお試しください。
CSVファイルをSQLテーブルとして取得し、SQLクエリを許可して、別のCSVファイルまたはJSONファイルを作成します。
あなたの場合、あなたはただ電話するでしょう:
crunch -in tableA.csv tableB.csv -out output.csv \
"SELECT tableA.id, tableA.email, tableB.name
FROM tableA LEFT JOIN tableB USING (email)"
ツールにはJava 8以降が必要です。
いくつかの利点:
join
ベースのソリューションよりも使いやすく、理解しやすい。免責事項:私はそのツールを書きました。Google Codeが閉じられた後は、以前は混乱していたが、それを復活させ、使用するにつれて新しい機能を追加した。
LibreOfficeなどのスプレッドシートプログラムでCSVファイルを読み取り、VLOOKUP()
マクロを使用して2番目のファイルで名前を検索できます。
https://filerefinery.comにあるような、csvファイルを結合するために特別に設計されたツールを使用することもできます。
現在サポートしている操作は次のとおりです。csvファイルの結合。2つのcsvファイルに対して、外部、内部、左、および右の結合操作に相当するSQLを実行することができます。各ファイルで結合キーとして使用される列は構成可能です。