Ich muss den Spaltentyp in PostgreSQL kennen (d. H. varchar(20)
). Ich weiß, dass ich das wahrscheinlich mit \d
etwas in psql finden könnte, aber ich brauche es mit einer Select-Abfrage zu tun.
Ist das in PostgreSQL möglich?Fragen Sie die Schemadetails einer Tabelle in PostgreSQL ab?
Antwort
Sie können vollständig unter Verwendung einer Tabelle Postgres mit der folgenden Abfrage beschreiben.
Es ist auch möglich psql Client mit der -E
Option
$ psql -E
und dann einem einfachen \d mytable
ausgeben wird die Abfragen von Postgres zum Starten der Tabelle zu beschreiben. Es funktioniert für jeden psql beschreiben Befehle.
Ja, schauen Sie sich die information_schema.
SELECT
a.attname as Column,
pg_catalog.format_type(a.atttypid, a.atttypmod) as Datatype
FROM
pg_catalog.pg_attribute a
WHERE
a.attnum > 0
AND NOT a.attisdropped
AND a.attrelid = (
SELECT c.oid
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relname ~ '^(TABLENAME)$'
AND pg_catalog.pg_table_is_visible(c.oid)
)
Tith diese Spaltennamen und Datentyp abruft:
Es gibt eine viel einfachere Weg in PostgreSQL, um den Typ einer Spalte zu erhalten.
SELECT pg_typeof(col)::text FROM tbl LIMIT 1
Die Tabelle muss mindestens eine Reihe, natürlich halten. Und Sie erhalten nur den Basistyp ohne Typmodifikatoren (falls vorhanden). Verwenden Sie die Alternative unten, wenn Sie das auch brauchen.
Sie können die Funktion auch für Konstanten verwenden. Die manual on pg_typeof()
.
Für einen leeren (oder jede) Tabelle Sie pg_attribute
den Systemkatalog abfragen können die vollständige Liste der Spalten und deren jeweilige Art, um zu erhalten:
SELECT attnum, attname AS column, format_type(atttypid, atttypmod) AS type
FROM pg_attribute
WHERE attrelid = 'myschema.mytbl'::regclass -- optionally schema-qualified
AND NOT attisdropped
AND attnum > 0
ORDER BY attnum;
Das Handbuch auf format_type()
und auf object identifier types wie regclass
.
Suche nach "format_type (attypid, atttypmod)" für eine Weile, als es scheint, dass das gleiche wie information_schema.columns. udt_name (oder ähnlich und das ist vollkommen in Ordnung für meinen Fall). Vielen Dank :). – Dolfa
- 1. Fragen Sie den AppStore ab?
- 2. 2 Tabellen - Fragen Sie sie miteinander ab und speichern Sie PKs von jeder Tabelle in einer neuen Tabelle
- 3. Postgresql mit Golang, Fragen
- 4. So fragen Sie die Formularbibliothek in SharePoint 2010 ab?
- 5. Wie fragen Sie eine Tabelle mit einem Schema in Sequelize.js ab?
- 6. So Fragen Sie die Liste ab, während Sie die Reihenfolge beibehalten
- 7. tsql: Wie fragen Sie mit Bindestrichen in Spaltennamen ab?
- 8. PostgreSQL: Zeilen aus der Tabelle ab 5 Minuten abrufen
- 9. So fragen Sie dieses Datum Format in PostgreSQL
- 10. Zeigen Sie zufällige Fragen aus einer Tabelle ohne Wiederholung
- 11. PostgreSQL - nächste fortlaufende Nummer in einer Tabelle
- 12. Suche in PostgreSQL Tabelle
- 13. So begrenzen Sie die maximale Anzeigelänge einer Spalte in PostgreSQL
- 14. Wie fragen Sie eine int-Spalte nach einem Wert ab?
- 15. Wie überprüfen Sie die Replikationsverzögerung in PostgreSQL?
- 16. Wie fragen Sie eine Datenbank in der Mitte einer jruby-on-rails-Webseite ab?
- 17. So rufen Sie die letzte Zeile einer Tabelle ab und fügen sie in eine andere Tabelle ein
- 18. C# Fragen mehrere Fragen in einer Schleife
- 19. Problematische namenlose Tabelle in Postgresql
- 20. Fragen Sie die Facebook Graph API für Objekte ab, die eine bestimmte Zeichenfolge enthalten.
- 21. PostgreSQL Tabelle mehrere Werte
- 22. Postgresql: Wie Sie Tabelle für Zeile concat?
- 23. Testdaten für PostgreSQL-Tabelle
- 24. Ändern Primärschlüssel in PostgreSQL Tabelle
- 25. Temporäre Tabelle Postgresql-Funktion
- 26. Maximale (verwendbare) Anzahl von Zeilen in einer Postgresql-Tabelle
- 27. Wie man eine Spalte einer Tabelle in PostgreSQL einer anderen Tabelle kopiert im Vergleich gleiche ID
- 28. Generieren von Testdaten in PostgreSQL Tabelle
- 29. Django - rufen Sie die Formulareingabewerte ab
- 30. Sollten Sie nach einer Eingabe fragen oder nach einer Änderung globaler Variablen in der Skriptdatei fragen?
Ausgezeichnete Antwort! Ich stieß jedoch auf ein anderes Problem: http://stackoverflow.com/questions/4336465/using-query-to-set-the-column-type-in-postgresql – David
Ich glaube nicht, dass Sie diese Regex-Übereinstimmung brauchen, ' c.relname ~ '^ (TABLENAME) $' 'entspricht" c.relname = 'TABLENAME' ". Schöne Antwort. –
@mu Du hast recht, aber ich denke er hat es einfach kopiert von etwas mit Regex-Unterstützung :) –