Tabellenname bei PostgreSQL

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Tabellenname bei PostgreSQL

Beitrag 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
F3K Total
********
Beiträge: 3704
Registriert: Mo, 28.02.2011 17:49

Re: Tabellenname bei PostgreSQL

Beitrag 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
RobertG
********
Beiträge: 2033
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Tabellenname bei PostgreSQL

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenname bei PostgreSQL

Beitrag 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
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenname bei PostgreSQL

Beitrag 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
Antworten