正規表現で CSV から SQL を作成する


更新1:Notepad++ で動かなかったので修正しました。
更新2:001 のような 0 埋めの数字が ‘ で囲まれない問題を修正しました

Excel のマクロで作っていたのですが、遅かったため正規表現を使って再現してみました。

区切り文字:,
引用符:”
の想定で。

‘ をエスケープ

パターン:
'

置き換え後:
''

文字列を ‘ で囲む

パターン:
(?:^|(?<=,))(?!(?:NULL|0|(?:0\.|[1-9])[0-9\.]*)(?:(?=,)|$))(?:"(.*?(?<!\\))"|([^,"\r\n]*))(?:(?=,)|$)

置き換え後:
'\1\2'

INSERT 句を付ける

パターン:
^

置き換え後:
INSERT INTO 【テーブル名】 VALUES (

後ろのカッコとデリミタ ; を付ける

パターン:
$

置き換え後:
);

※SQL Server の場合は適度に GO を入れましょう。

CSV の , はそのまま生かす形になりました。業務で日常的に使ってはいますが、テストが不十分なので動作は保証したくないです。