In PostgreSQL wird bei Namen ohne Anführungszeichen zwischen Groß- und Kleinschreibung unterschieden. Also SELECT * FROM hello
und SELECT * FROM HELLO
sind gleichwertig.
Bei Namen in Anführungszeichen wird jedoch zwischen Groß- und Kleinschreibung unterschieden. SELECT * FROM "hello"
ist nicht Äquivalent zu SELECT * FROM "HELLO"
.
Um eine „Brücke“ zwischen Namen in Anführungszeichen und Namen ohne Anführungszeichen zu schlagen, werden Namen ohne Anführungszeichen implizit kleingeschrieben, also hello
, HELLO
und HeLLo
entsprechen "hello"
, aber nicht auf "HELLO"
oder "HeLLo"
(UPS!).
Also beim Erstellen Entitäten (Tabellen, Ansichten, Prozeduren usw.) in PostgreSQL sollten Sie diese entweder ohne Anführungszeichen oder in Anführungszeichen, aber in Kleinbuchstaben angeben.
Um vorhandene Tabellen/Ansichten/usw. umzuwandeln, können Sie so etwas wie ALTER TABLE "FOO" RENAME TO "foo"
verwenden .
Oder versuchen Sie, dump von MSSQL zu ändern, um es "PostgreSQL-kompatibel" zu machen (so dass es foo
enthält s oder "foo"
s, aber nicht "FOO"
s).
- Entweder durch explizites Bearbeiten der Dump-Datei. (Wenn Sie Linux verwenden, können Sie
sed -r 's/"[^"]+"/\L\0/g' dumpfile
ausführen — Seien Sie jedoch gewarnt, dass dieser Befehl auch Text in String-Literalen ändern kann.) - Oder indem Sie einige Optionen angeben, wenn Sie einen Dump von MSSQL erhalten. (Ich bin mir nicht sicher, ob es solche Optionen in MSSQL gibt, habe es nie benutzt, aber wahrscheinlich sollten solche Optionen existieren.)