Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Postgres-Groß-/Kleinschreibung

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.)