CSVと格闘の日々

CSVをやっつけたので備忘録的な記事です。

 

MySQLcsvSQL Serverにインポートしたのですが、クセのあるテーブルですんなりインポートできなかったのです。

 

諸悪の根源はこいつらです。

  1. セル内改行
  2. セル内カンマ
  3. ダブルコーテーション

 

セル内改行

セルで改行しているため、「行末なのにカンマが無い」と定義しました。

([^,])\n ⇒ ナシ

にしました。

秀丸だと\rが置換できず苦戦しました。\rが置換できればすんなり済んだのですけど。

 

セル内カンマ

改行と同様ですがカンマだらけのcsvファイルでは単純にはいきません。そこで下記の様な正規表現で対処しました。

 (,"[^",]+)(,)([^",]+"?,) ⇒ \1,\3

括弧はグループ化。

カンマ、ダブルコーテーションで始ってカンマとダブルコーテーションでは無い文字列で始って、カンマが現われる。

そしてカンマとダブルコーテーションでは無い文字列が続き、最短のダブルコーテーションとカンマで終わる文字列を探しました。

 

ダブルコーテーション

ダブルコーテーションは単純に除去しました。

おしまい。