UTF8データをデータベースに格納する必要がある場合は、UTF8を受け入れるデータベースが必要です。データベースのエンコーディングはpgAdminで確認できます。データベースを右クリックして、[プロパティ]を選択します。
しかし、そのエラーは、ソースファイルに無効なUTF8データがあることを示しているようです。つまり、copy
ユーティリティは、UTF8ファイルをフィードしていることを検出または推測しました。
Unixのいくつかのバリアントで実行している場合は、file
を使用してエンコーディングを(多かれ少なかれ)確認できます。 ユーティリティ。
$ file yourfilename
yourfilename: UTF-8 Unicode English text
(これはターミナルのMacでも機能すると思います。)Windowsでそれを行う方法がわかりません。
Windowsシステムからのファイル(つまり、 ではないファイル)で同じユーティリティを使用する場合 UTF8でエンコードされている場合)、おそらく次のように表示されます:
$ file yourfilename
yourfilename: ASCII text, with CRLF line terminators
状況がおかしい場合は、入力データを既知のエンコーディングに変換するか、クライアントのエンコーディングを変更するか、またはその両方を試みることができます。 (私たちは、エンコーディングに関する私の知識の限界を本当に広げています。)
iconv
を使用できます 入力データのエンコーディングを変更するユーティリティ。
iconv -f original_charset -t utf-8 originalfile > newfile
文字セットのサポートの指示に従って、psql(クライアント)エンコーディングを変更できます。そのページで、「自動文字セット変換を有効にするには」というフレーズを検索します。