2010-12-17 2 views
10

Ich habe die Spaltenlänge manuell in meiner vorherigen Datenbank geändert.Wie bekomme ich Spaltengröße und -typ durch meine Datenbank in PostgreSQL

Aber nach dem Erstellen neuer Datenbank über HQL erstellt varchar(255) und ich muss es länger machen.

Ich muss herausfinden, welche Spalte der Tabelle ich ändern sollte?

Ich kann es manuell finden, aber jetzt habe ich etwa 200 Tabellen und ich brauche eine Abfrage, um dies zu tun.

Wie kann ich den Spaltentyp und seine Länge in Postgres mit einer SQL-Abfrage erhalten?

+3

In Postgresql können Sie "varchar" (ohne eine Länge) oder "Text" (auch ohne eine Länge) verwenden, um ein Textfeld zu erstellen, das die Länge des Textes behandelt. In Postgreql werden Textfelder mit fester Breite selten benötigt, da Strings mit beliebiger Länge problemlos verarbeitet werden können. –

+1

ja, Sie haben Recht, es gibt keinen Unterschied in der Leistung, was ist mit der Größe der Daten –

Antwort

24

Die INFORMATION_SCHEMA Tabellen finden Sie hier helfen:

select * 
from INFORMATION_SCHEMA.COLUMNS 

Sie die table_name untersuchen können, column_name, data_type und character_maximum_length Spalten in der Ergebnismenge.

1

Stolperte über diese alte Post. Basierend auf Rotfilter Antwort hier ist die Abfrage für die ursprüngliche Frage:

select table_name, 
     column_name 
from INFORMATION_SCHEMA.COLUMNS 
where data_type = 'character varying' 
    and character_maximum_length = 200 

es zusammen mit der alten table-Syntax setzen:

ALTER TABLE X ALTER COLUMN Y TYPE text; 

Sie alle Befehle erzeugen können Sie, indem Sie diese Abfrage benötigen:

select 'ALTER TABLE ' || table_name || ' ALTER COLUMN ' || column_name || ' TYPE text;' 
from INFORMATION_SCHEMA.COLUMNS 
where data_type = 'character varying' 
    and character_maximum_length = 200; 

Hoffe das hilft jemandem in der Zukunft, oder spart ihnen zumindest etwas Zeit!

Verwandte Themen