私はpostgres 9.2を使用しています。postgres db のすべてのテーブルで、すべての列名を大文字に変更する必要があります。
これを行う方法はありますか?? postgres の構成を変更する必要はありますか?
私はpostgres 9.2を使用しています。postgres db のすべてのテーブルで、すべての列名を大文字に変更する必要があります。
これを行う方法はありますか?? postgres の構成を変更する必要はありますか?
これを行う方法を説明する前に、そうしないことを強くお勧めします。
PostgreSQL では、次のように、テーブルまたは列の名前が引用符で囲まれていない場合:
SELECT Name FROM MyTable WHERE ID = 10
実際には、最初に自動的に小文字に変換されるため、上記のクエリは次と同じです。
SELECT name FROM mytable WHERE id = 10
すべての名前を大文字に変換する場合、次のステートメントは機能しません。
SELECT NAME FROM MYTABLE WHERE ID = 10
このクエリを機能させるには、すべての名前を二重引用符で囲む必要があります。
SELECT "NAME" FROM "MYTABLE" WHERE "ID" = 10
一方、標準の PostgreSQL 小文字のみの合意を使用する場合は、大文字と小文字の任意の組み合わせを使用でき、名前を引用しない限り機能します。
それでも大文字に変換したい場合は、pg_dump --schema-only
.
それが完了したら、すべてのステートメントをチェックし、このダンプに基づいてCREATE TABLE
適切なステートメントを作成します。これを行うには、スクリプト (Perl または Python) を作成する必要があります。ALTER TABLE
または、 INFORMATION_SCHEMA.TABLESおよび/またはINFORMATION_SCHEMA.COLUMNSを読み取り、適切なALTER TABLE
ステートメントを作成して実行することもできます。