Unicodeな文字を使っているエクセルデータを、DBに一括登録する方法

Unicodeにしか対応していない特殊な漢字を含むエクセルファイルがあるとします(レアケース?)
これを、DBサーバのUTF8形式のテーブルに一括登録する方法(今回はPostgreSQLで実施。CSVファイルインポート文が違うだけで、MySQLでも他のDBサーバでも対応可能)

エクセル(と言うかWindows 2000以降のOS)は、内部的にUnicode(UTF-16)で処理しているので、エクセル上でsjisに存在しない文字の入出力が可能です。ただし、テキストファイルに出力する場合は、Unicodeテキストでの保存以外(CSV形式とか)はsjis保存になるので、まずはUnicodeで出力して、適当なエディタでUTF8保存すればOK。下記に手順を。

  1. エクセルで「名前を付けて保存」→「ファイルの種類」でUnicodeテキストを選択
  2. Unicode形式なので、TepaEditorとか、秀丸とかで開いて、UTF8保存
  3. エクセルでUnicodeテキスト保存すると、いくつかの行で、タブの数が違うので、足りないタブは足して、多すぎる場合(たぶんこっちがほとんど)の場合は削除(適当な自作ツールで固定カラム数になるようにするのが良いです)
  4. Unicodeテキストで保存するとタブ区切りのTSV形式なので、タブをカンマに変換してCSVにする
  5. CSVデータになったところで、SQLに一括登録する(下記のコマンドで) 
copy TableName from '/home/ichikawa/data/utf8-kansei.txt' DELIMITER ',';

上記は、絶対パスじゃないとエラーがでます。
カラム数が違う(カンマの数が足りない、多いなど)の場合はエラー(エラー行数など)が出力されますので、エラー行を見て適宜修正して再チャレンジ。

こんな感じです。