Seite 1 von 1

Tabellenname bei PostgreSQL

Verfasst: Mo, 29.11.2021 15:52
von Stephan
Hallo,

auf eine PostgreSQL-Datenbank kann ich per Basic eine Abfrage ausführen wie folgt:

Code: Alles auswählen

'...
oResultSet = oStatement.executeQuery("SELECT lanr.havgid as HAV FROM lanr")
'...
wenn ich aber einen Spaltennamen ermitteln möchte, muss ich den Tabellennamen so angeben:

Code: Alles auswählen

dd = oDBConnection.getTables()
Msgbox dd.getByName("public.lanr").Columns.hasByName("havgid")
es geht nicht:

Code: Alles auswählen

dd = oDBConnection.getTables()
Msgbox dd.getByName("lanr").Columns.hasByName("havgid")

Frage:
Woher weiß ich das es "public" heissen muss?

Was ich meine ist ob das immer "public" heisst wenn es .... naja, um die 'eigentlichen' Datentabellen geht? Es gibt in der konkreten DAtenbank noch "information_schema" (DAS dürfte tatsächlich immer so heissen) und "pg_catalog" (da bin ich mir schon weniger sicher ob es immer so heisst)


Gruß
Stephan

Re: Tabellenname bei PostgreSQL

Verfasst: Mo, 29.11.2021 17:00
von F3K Total
Hallo Stephan,
wusstest du, dass du die Spaltennamen auch aus dem Resultset auslesen kannst?
Alle Spalten mit * auslesen.

Code: Alles auswählen

'...
oResultSet = oStatement.executeQuery("SELECT * FROM lanr")
'...
hier stehen dann die Spaltennamen

Code: Alles auswählen

sColumns = oResultSet.Columns.ElementNames
... konnte ich aber nur mit HSQL-DBs testen.

Gruß R

Re: Tabellenname bei PostgreSQL

Verfasst: Mo, 29.11.2021 20:03
von RobertG
Hallo Stephan,

das "public"-Schema ist das Stanadrdschema von PostgreSQL. Schaue einmal hier:
https://www.postgresql.org/docs/current ... MAS-PUBLIC

Das Arbeiten mit Schemata ist im Prinzip ein Arbeiten mit Unterordnern. Soweit ich weiß gibt es so etwas bei MySQL/MariaDB gar nicht.

Gruß

Robert

Re: Tabellenname bei PostgreSQL

Verfasst: Mo, 29.11.2021 21:00
von Stephan
wusstest du, dass du die Spaltennamen auch aus dem Resultset auslesen kannst?
das hatte ich zuerst versucht, leider klappt das nicht denn es gibt "oResultSet.Columns" nicht. Ich könnte nur per:

Code: Alles auswählen

oResultSet.findColumn("Spaltenname")
durchprobieren ob bestimmte Spalten (deren Namen ich kennen müsste) vorhanden sind.

Vielleicht eine Besonderheit bei PostgreSQL.?


Gruß
Stephan

Re: Tabellenname bei PostgreSQL

Verfasst: Mo, 29.11.2021 21:03
von Stephan
RobertG hat geschrieben: Mo, 29.11.2021 20:03 Hallo Stephan,

das "public"-Schema ist das Stanadrdschema von PostgreSQL. Schaue einmal hier:
https://www.postgresql.org/docs/current ... MAS-PUBLIC

Das Arbeiten mit Schemata ist im Prinzip ein Arbeiten mit Unterordnern. Soweit ich weiß gibt es so etwas bei MySQL/MariaDB gar nicht.

Gruß

Robert
OK, dann muss ich zur Not alle Namen zerlegen. Ich weiß ja das der Gesamtname immer den Aufbau:

<Schema>.<Tabellenname>

hat.


Gruß
Stephan