2013-01-16 13 views

Antwort

31

Bevor ich erkläre, wie das zu tun ist, würde ich stark vorschlagen, das NICHT zu tun.

In PostgreSQL, wenn Tabellen- oder Spaltennamen unquoted sind, wie:

SELECT Name FROM MyTable WHERE ID = 10 

Sie tatsächlich automatisch Fall zuerst zu senken gefaltet, so obige Abfrage ist identisch mit:

SELECT name FROM mytable WHERE id = 10 

Wenn Sie sollten alle Namen in Großbuchstaben umwandeln, diese Anweisung funktioniert NICHT:

SELECT NAME FROM MYTABLE WHERE ID = 10 

Sie müssen doppelte Anführungszeichen jeder einzelne Name in dieser Abfrage, damit es funktioniert:

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

Wenn auf Sie dagegen Standard PostgreSQL Klein verwenden nur Vereinbarung, kann man jeden Case verwenden können Kombination und es wird funktionieren, solange Sie keinen Namen angeben. Jetzt


, wenn Sie noch in Großbuchstaben umwandeln bestehen, können Sie tun, dass pg_dump --schema-only durch Dumping Ihre Datenbank-Schema in eine Datei.

Nachdem Sie das getan haben, überprüfen Sie alle CREATE TABLE Anweisungen und konstruieren Sie geeignete ALTER TABLE Aussagen basierend auf diesem Dump - Sie müssen ein Skript (Perl oder Python) dazu schreiben, um dies zu tun.

Alternativ können Sie INFORMATION_SCHEMA.TABLES und/oder INFORMATION_SCHEMA.COLUMNS lesen und auch entsprechende ALTER TABLE Anweisungen erstellen und ausführen.

+0

Anscheinend doppelte Spalten zitieren Namen in 'CREATE TABLE' erstellt Spaltennamen mit den Anführungszeichen, aber es * noch * Kleinbuchstaben alles. – weberc2

+0

@ weberc2: Das ist einfach falsch. SQLFiddle-Proof: http://sqlfiddle.com/#!17/de97a/1 – mvp

+0

Ja, sieht aus wie mein Texteditor, Smart-Anführungszeichen eingefügt. Mein Fehler. – weberc2

Verwandte Themen