PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Ändern Sie die Tabellenspaltennamen in Postgres in Großbuchstaben

Bevor ich erkläre, wie das geht, möchte ich dringend schlage vor, das NICHT zu tun.

In PostgreSQL, wenn Tabellen- oder Spaltennamen nicht in Anführungszeichen stehen, wie:

SELECT Name FROM MyTable WHERE ID = 10

Sie wurden tatsächlich automatisch in Kleinbuchstaben gefaltet zuerst, also ist die obige Abfrage identisch mit:

SELECT name FROM mytable WHERE id = 10

Wenn Sie alle Namen in Großbuchstaben umwandeln würden, funktioniert diese Anweisung NICHT :

SELECT NAME FROM MYTABLE WHERE ID = 10

Sie müssen jeden einzelnen Namen in dieser Abfrage in doppelte Anführungszeichen setzen, damit es funktioniert:

SELECT "NAME" FROM "MYTABLE" WHERE "ID" = 10

Wenn Sie andererseits die standardmäßige PostgreSQL-Vereinbarung nur für Kleinbuchstaben verwenden, können Sie jede Kombination aus Groß- und Kleinbuchstaben verwenden, und es funktioniert, solange Sie keinen Namen angeben.

Wenn Sie jetzt immer noch darauf bestehen, in Großbuchstaben umzuwandeln, können Sie das tun, indem Sie Ihr Datenbankschema mit pg_dump --schema-only .

Nachdem Sie das getan haben, überprüfen Sie alle CREATE TABLE Anweisungen und erstellen Sie geeignete ALTER TABLE Anweisungen, die auf diesem Dump basieren - dazu müssen Sie ein Skript (Perl oder Python) schreiben.

Alternativ können Sie INFORMATION_SCHEMA.TABLES lesen und/oder INFORMATION_SCHEMA.COLUMNS und auch entsprechendes ALTER TABLE konstruieren und ausführen Aussagen.