2013-01-16 11 views

risposta

31

Prima di spiegare come fare questo, vorrei fortemente suggerire di NON farlo.

In PostgreSQL, se i nomi di tabella o colonna sono non quotate, come:

SELECT Name FROM MyTable WHERE ID = 10 

Effettivamente automaticamente ripiegati in minuscolo prima, per interrogare sopra è identica a:

SELECT name FROM mytable WHERE id = 10 

Se dovresti convertire tutti i nomi in maiuscolo, questa dichiarazione non funzionerà:

SELECT NAME FROM MYTABLE WHERE ID = 10 

Si dovrà raddoppiare-citazione ogni singolo nome in questa query per farlo funzionare:

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

Se, d'altra parte, si utilizza PostgreSQL in basso a caso standard unico accordo, è possibile utilizzare ogni caso combinazione e funzionerà finché non si cita alcun nome.


Ora, se ancora insistete per convertire in maiuscolo, è possibile farlo dal dumping lo schema del database in un file utilizzando pg_dump --schema-only.

Dopo aver fatto questo, controllare tutti CREATE TABLE dichiarazioni e costruire appropriate ALTER TABLE dichiarazioni basate su questa discarica - si dovrà scrivere alcuni script (Perl o Python) per farlo.

In alternativa, è possibile leggere INFORMATION_SCHEMA.TABLES e/o INFORMATION_SCHEMA.COLUMNS e anche costruire ed eseguire le istruzioni appropriate ALTER TABLE.

+0

I nomi di colonna apparentemente a virgolette in "CREATE TABLE" creano nomi di colonna contenenti i caratteri di citazione, ma * still * diminuisce il tutto. – weberc2

+0

@ weberc2: questo è semplicemente falso. Prova SQLFiddle: http://sqlfiddle.com/#!17/de97a/1 – mvp

+0

Sì, sembra che il mio editor di testo inserisse citazioni intelligenti. Errore mio. – weberc2

Problemi correlati