9

私はpostgres 9.2を使用しています。postgres db のすべてのテーブルで、すべての列名を大文字に変更する必要があります。

これを行う方法はありますか?? postgres の構成を変更する必要はありますか?

4

3 に答える 3

44

これを行う方法を説明する前に、そうしないことを強くお勧めします。

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ステートメントを作成して実行することもできます。

于 2013-01-16T05:51:41.430 に答える