I PostgreSQL er navne uden anførselstegn mellem store og små bogstaver. Derfor SELECT * FROM hello
og SELECT * FROM HELLO
er ækvivalente.
Anførte navne skelner dog mellem store og små bogstaver. SELECT * FROM "hello"
er ikke svarende til SELECT * FROM "HELLO"
.
For at lave en "bro" mellem navne uden anførselstegn og navne uden anførselstegn, er navne uden anførselstegn implicit med små bogstaver, således hello
, HELLO
og HeLLo
svarer til "hello"
, men ikke til "HELLO"
eller "HeLLo"
(UPS!).
Således når du opretter enheder (tabeller, visninger, procedurer osv.) i PostgreSQL, bør du angive dem enten uden citat eller citeret-men med små bogstaver.
For at konvertere eksisterende tabeller/visninger/osv kan du bruge noget som ALTER TABLE "FOO" RENAME TO "foo"
.
Eller prøv at ændre dump fra MSSQL for at gøre det "PostgreSQL-kompatibelt" (så det vil indeholde foo
s eller "foo"
s, men ikke "FOO"
s).
- Enten ved eksplicit at redigere dumpfil. (Hvis du bruger Linux, kan du lave
sed -r 's/"[^"]+"/\L\0/g' dumpfile
— vær dog advaret om, at denne kommando også kan ændre tekst i strenge bogstaver.) - Eller ved at angive nogle muligheder, når du henter dump fra MSSQL. (Jeg er ikke sikker på, om der er sådanne muligheder i MSSQL, har aldrig brugt det, men sandsynligvis burde sådanne muligheder eksistere.)