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

sqlまたはphpPgAdminを使用してPostgreSQLデータベースのデータベースエンコーディングを変更するにはどうすればよいですか?

    つまり、既存のデータ破損のリスクを冒さずに、phpPgAdminまたはSQLだけでこれを行うことはできません。 。すべてのデータをエクスポートし、正しいエンコーディングでデータベースを作成し、エクスポートされたデータを復元する必要があります。

    これがあなたが進むべき方法です:

    1. データベースダンプを作成

      pg_dump your_database > your_database.sql

      これにより、データベースがSQL形式で、現在使用しているエンコーディングで保存されます。

    2. データベースを削除 (または名前を変更します):

      DROP DATABASE your_database

      それを行うのに十分なストレージがある場合は、新しいデータベースですべてが問題ないことを確認するまで古いデータベースを残すことをお勧めします。名前を変更 それ:

      ALTER DATABASE your_database RENAME TO your_database_backup;

    3. 新しいエンコーディングでデータベースを作成する

      CREATE DATABASE your_database WITH ENCODING 'UNICODE' TEMPLATE=template0;

    4. 以前に作成されたダンプからデータをインポート

      PGCLIENTENCODING=YOUR_OLD_ENCODING psql -f your_database.sql your_database

      psqlクライアントエンコーディングを古いデータベースにあったものに設定する必要があります。

    エンコーディングをオンザフライで変更することはできません。これは、内部データベースデータのほとんどを書き換える必要があるためです。これは、私が説明したdbの方法で再作成するのとほぼ同じです。

    データベースに関する内部postgres情報を変更することは可能であり、この変更後に新しいデータは正しく保存されますが、既存のデータは破損する可能性があります



    1. PostgreSQL count(*)が常に遅い場合、複雑なクエリをページ付けする方法は?

    2. Oracleの数値のデフォルトの精度とスケールは何ですか?

    3. インデックスを使用してクエリのパフォーマンスを向上させる例

    4. SQLで一意の制約を削除するにはどうすればよいですか?