CSVをやっつけたので備忘録的な記事です。
MySQLのcsvをSQL Serverにインポートしたのですが、クセのあるテーブルですんなりインポートできなかったのです。
諸悪の根源はこいつらです。
- セル内改行
- セル内カンマ
- ダブルコーテーション
セル内改行
セルで改行しているため、「行末なのにカンマが無い」と定義しました。
([^,])\n ⇒ ナシ
にしました。
秀丸だと\rが置換できず苦戦しました。\rが置換できればすんなり済んだのですけど。
セル内カンマ
改行と同様ですがカンマだらけのcsvファイルでは単純にはいきません。そこで下記の様な正規表現で対処しました。
(,"[^",]+)(,)([^",]+"?,) ⇒ \1,\3
括弧はグループ化。
カンマ、ダブルコーテーションで始ってカンマとダブルコーテーションでは無い文字列で始って、カンマが現われる。
そしてカンマとダブルコーテーションでは無い文字列が続き、最短のダブルコーテーションとカンマで終わる文字列を探しました。
ダブルコーテーション
ダブルコーテーションは単純に除去しました。
おしまい。