2011-09-15 44 views
1

POSTGRESQLデータベースをあるサーバーから別のサーバーに移動しようとしています。これを行うために、私はpg_dumpを行い、新しいサーバ上に新しいデータベースを作成した後、pg_dumpedファイルを復元しようとしました。ほとんどの場合、リストアは問題ありませんでしたが、1つの表はコピーされませんでした。無効なUTF8バイトシーケンスに問題があります

pg_restore: [archiver (db)] COPY failed: ERROR: invalid byte sequence for encoding "UTF8": 0x92 
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding". 

は今、データベースのプロパティを確認した後、それが元のテーブルがSQL_ASC2でエンコードされたことが判明したが、私が作成した新しいものがUTF8です。 エンコードについてはわかりませんが、UTF8とASC2の下位互換性はありませんか?では、なぜ無効なバイトシーケンスがありますか?

新しいデータベースをSQL_ASC2を使用するデータベースに変更するとこの問題が解決されますか? 新しいデータベースのエンコーディングを変更する必要がある場合、どうすればよいですか?私はそれを変更することはできますか、または最初から始めてデータベース全体をリメイクする必要がありますか?

ありがとうございました!あなたは「LATIN9」にCLIENT_ENCODING設定することができ、データベースに接続する前に

答えて

1

(それはおそらく何であるか、とにかく:それは受け入れられます)あなたはこれを行うことができます。

1)-f my_filenameフラグとpg_restoreの発行。 ))上部付近に存在

3 "のpsql -Uユーザ名dbnameの<ファイル名" で提出してください。;

2)はおそらくすでに "= 'UTF8' をCLIENT_ENCODING SET" がある(結果のファイルを編集します。 (ほとんどの場合、別のユーザー名またはdbnameを指定する必要がありますが、 "\ connect newdbname"はスクリプトの先頭にあり、引き継がれます)。

+0

ありがとうございました、私はあなたの言ったことはまったくしませんでしたが、問題のテーブルのバックアップファイルを作成したときにlatin9を選択してテーブルを復元しました。データの中には少し違って見えるものもありますが、実際には以前は読めるものがありましたが、それ以前にはファンキーなキャラクターがありましたが、以前はそこにいました。 – zermy

0

If * nixボックスにあり、pg_dumpファイルがプレーンテキストの場合、ダンプファイルをポストグルにインポートする前にiconvを実行してみることができます。

関連する問題