挿入時のPostgresエラー - エラー: エンコード「UTF8」のバイトシーケンスが無効です: 0x00 質問する

挿入時のPostgresエラー - エラー: エンコード「UTF8」のバイトシーケンスが無効です: 0x00 質問する

mysql から postgres にデータを挿入するときに次のエラーが発生します。

入力データからすべての null 文字を手動で削除する必要がありますか? postgres にこれを実行させる方法はありますか?

ERROR: invalid byte sequence for encoding "UTF8": 0x00

ベストアンサー1

PostgreSQL は、テキスト フィールドに NULL (\0x00) 文字を格納することをサポートしていません (これは、完全にサポートされているデータベースの NULL 値とは明らかに異なります)。

ソース:http://www.postgresql.org/docs/9.1/static/sql-syntax-lexical.html#SQL-SYNTAX-STRINGS-UESCAPE

NULL文字を保存する必要がある場合は、bytea分野- 必要なものはすべて保存できますが、テキスト操作はサポートされません。

PostgreSQL はテキスト値でこれをサポートしていないため、これを削除する良い方法はありません。データを bytea にインポートし、後で特別な関数 (perl か何か) を使用してテキストに変換することもできますが、ロードする前に前処理でそれを行う方が簡単になるでしょう。

おすすめ記事