CSVファイルから名前で列を抽出する方法

CSVファイルから名前で列を抽出する方法

MAC(Unix)に一貫性のない列を持つ150を超えるCSVファイルがあります。たとえば、次のようになります。

プレートA

ID 西洋の平地 移動する Eメール 補助携帯電話 名前
V V V V V V
V V V V V V

Bフィルム

ID 西洋の平地 西洋の平地 西洋の平地 西洋の平地 西洋の平地
V V V V V V
V V V V V V

表C

うつ病 Eメール 移動する 名前 西洋の平地 うつ病
V V V V V V
V V V V V V

フォームD

ID うつ病 うつ病 うつ病 移動する うつ病
V V V V V V
V V V V V V

上記の各ワークシートに次の列がある場合は、新しいワークシートを派生する必要があります。

ID、名前、メール、携帯電話、SECONDARY_MOBILE

次に、CATを使用して新しくエクスポートしたワークシートを1つのワークシートにマージします。これにより、Oracle DBにデータをアップロードできます。

したがって、SHEET Dの場合、派生テーブルは次のようになります。

ID 名前 Eメール 移動する SECONDARY_MOBILE
V
V

これがはっきりしていることを願っています。よろしくお願いします。

答え1

IETF RFCにもかかわらず、CSVは1つの形式ではなく一連の形式です。したがって、目的のアクションを実行すると主張する項目を見つけても、そのファイル形式が使用するCSVの特定のバリエーションを理解できない可能性があります。 UnixODBCにはCSVパーサーはありません。 PythonとPHPはどちらも非常に強力で柔軟なパーサーを備えています。私は後者に慣れています。必要なコードを書くのに約30分かかります。 OTOHデータをそのままOracleにインポートし、構造を正規化するには多くの作業が必要です。

答え2

使用ミラーこの3つのファイルで例を始めましょう。

#input_01.csv
a,b,c
0,2,5

#input_02.csv
b,a,c
0,2,5

#input_03.csv
b,a
0,2

君は走れるよ

mlr --csv cut -f a,b then unsparsify input_0*.csv >output.csv

持つ

a,b
0,2
2,0
2,0

関連情報