sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLデータベースの復元中に無効なバイトシーケンスエラーが発生しました

    古いバージョンのPostgreSQLは、新しいバージョンほどUTF-8準拠に厳密ではありませんでした。おそらく、無効なUTF-8を含むデータをそのような古いバージョンから新しいバージョンに復元しようとしています。

    無効な文字列はクリーンアップする必要があります。これらのエラーのためにインポートされなかったテーブルごとに、次の手順に従うことができます。

    1. テーブルの内容をダンプファイルからSQLプレーンテキストファイルに抽出します。

      pg_restore --table=tablename --data-only dumpfile >plaintext.sql
      
    2. テキストエディタで、またはiconvを使用して自動的に無効な文字を削除します :

      iconv -c -f UTF-8 -t UTF-8 <plaintext.sql >plaintext-cleaned.sql
      
    3. サニタイズされたデータをインポートします:

      psql dbname < plaintext-cleaned.sql
      



    1. すべての列にDEFAULT値を指定するテーブルに挿入するにはどうすればよいですか?

    2. JOINによって別のテーブルから存在しないデータを見つける方法は?

    3. Mysql:2つの日付の間のすべてのデータを選択します

    4. Oracle:クエリで合計のパーセントを取得する方法は?