複数のCSVから特定文字列を除いて1ファイルに結合する
この間ハマった仕事を年内に片付けておきたかったので試してみてた。
要件としては、1日ごとに生成されるアンケート結果のCSVを週イチで集計する時に1つのファイルに結合したい、っての。集計自体はDBサーバにアップしてやるんだけど数十個もあるファイルをいちいちアップしたくないし、ファイルごとのカラム名(1行目)が邪魔になるのでそれを除外したい、となる。
CSVの中身は↓こんなの。
"id","日時","1200,mail","9999,radio"
"735","2008-10-16 00:01:15","hoge1@example.com","満足"
"786","2008-10-16 00:21:13","hoge2@example.com","不満"
・
・
・
1行目がカラム名。1ファイルごとにカラム名があるから結合するときに除外したい。んで元がCSVだから文字列がダブルクォート(")でくくられてるしカンマ(‚)区切りになってる。
Perlでちゃちゃっとやればいいかと思ったけど、そしたら作業するみんなにPerlをインストールしなきゃいけないので却下。
んでいろいろと考えてみたらDOSコマンドだけで出来た。
以下手順メモ。
⁄⁄カレントディレクトリに移動
cd C:\temp\enquete_sample
⁄⁄全CSVから「日時」を含まない行を抽出して1つのTxtファイルに結合する
type sample-*.csv | find /v "日時" › merge_enquete.txt
年明けにまたやんなきゃいけないけど、ひとまずこれで年を越せますな。
« 仕事収め | ホーム | 明けましておめでとうございます。 »