Zugriff auf Relation über Konsole nicht möglich

Ludwigmller

SQL-Guru
Beiträge
171
Ich bin neu bei Postgresql (komme von MySQL) und wollte in einer Testdatenbank auf die Relation Bestellungen zugreifen:
Code:
postgres=# \dt
             Liste der Relationen
 Schema |     Name     |   Typ   | Eigent³mer
--------+--------------+---------+------------
 public | Bestellungen | Tabelle | postgres
 public | kunden       | Tabelle | postgres
(2 Zeilen)


postgres=# select * from Bestellungen;
FEHLER:  Relation »bestellungen« existiert nicht
ZEILE 1: select * from Bestellungen;
                       ^
postgres=# select * from "Bestellungen";
 BestellNr | Bestelldatum | Artikel | Kunde
-----------+--------------+---------+-------
         1 | 2020-01-01   |       1 |     1
         2 | 2021-01-19   |       2 |     3
(2 Zeilen)


postgres=# select * from bestellungen;
FEHLER:  Relation »bestellungen« existiert nicht
ZEILE 1: select * from bestellungen;
Über \dt wird die Relation als Bestellungen angezeigt. Der Select-Befehl funktioniert nur mit "Bestellungen". Sind die Anführungszeichen obligatorisch?

Wie bekomme ich das "³" statt "ü" bei Eigentümer weg?
 
Werbung:
Ohne "Feldname" wird aus Feldname nur feldname, also alles in klein.

Code:
akretschmer@akretschmer-desktop:~$ psql -p 5437 test
psql (13.0 (Ubuntu 13.0-1.pgdg18.04+1))
Type "help" for help.

test=# create table "Bestellungen" ( data text);
CREATE TABLE
test=*# insert into "Bestellungen" values ('test');
INSERT 0 1
test=*# commit;
COMMIT
test=# \q
akretschmer@akretschmer-desktop:~$ psql -p 5437 test -c 'select * from "Bestellungen"';
 data
------
 test
(1 row)

akretschmer@akretschmer-desktop:~$
 
Werbung:
Wenn Du die Tabellen mit Anführungszeichen anlegst, dann schreibt der SQL Standard vor, dass die Namen Case Sensitive sind. Ich würde sehr stark empfehlen, die Tabellen ohne Anführungszeichen anzulegen. Damit sind die Namen nicht mehr case sensitive (werden aber immer in lower-case gespeichert - was genau genommen nicht konform ist mit dem SQL Standard: dort ist vorgeschrieben das alles in Upper-Case gespeichert werden muss).

Details dazu im Handbuch - und auch im Postgres Wiki

Das ³ kriegst Du weg in dem Du in der Konsole eine andere Codepage verwendest. Das ist es worauf sich die Warnung von psql beim Starten bezieht. "chcp 65001" in der Kommandozeile vor dem Starten von psql sollte eigentlich funktionieren (Ich habe Postgres so eingestellt dass alles auf Englisch angezeigt wird, deswegen bin ich mir nicht ganz sicher).
 
Zurück
Oben