In PostgreSQL zijn niet-aangehaalde namen niet hoofdlettergevoelig. Dus SELECT * FROM hello
en SELECT * FROM HELLO
gelijkwaardig zijn.
Geciteerde namen zijn echter hoofdlettergevoelig. SELECT * FROM "hello"
is niet gelijk aan SELECT * FROM "HELLO"
.
Om een "brug" te maken tussen namen tussen aanhalingstekens en niet-aangehaalde namen, worden niet-aangehaalde namen impliciet in kleine letters gezet, dus hello
, HELLO
en HeLLo
zijn gelijk aan "hello"
, maar niet naar "HELLO"
of "HeLLo"
(OEPS!).
Dus, bij het maken entiteiten (tabellen, weergaven, procedures, enz.) in PostgreSQL, moet u ze ofwel niet-geciteerd, ofwel tussen aanhalingstekens maar in kleine letters specificeren.
Om bestaande tabellen/views/etc te converteren kun je zoiets gebruiken als ALTER TABLE "FOO" RENAME TO "foo"
.
Of probeer dump van MSSQL te wijzigen om het "PostgreSQL-compatibel" te maken (zodat het foo
zal bevatten s of "foo"
s maar niet "FOO"
s).
- Ofwel door het dumpbestand expliciet te bewerken. (Als je Linux gebruikt, kun je
sed -r 's/"[^"]+"/\L\0/g' dumpfile
— wees echter gewaarschuwd dat dit commando ook tekst in letterlijke tekenreeksen kan wijzigen.) - Of door enkele opties op te geven bij het ophalen van dump van MSSQL. (Ik weet niet zeker of er zulke opties zijn in MSSQL, ik heb het nooit gebruikt, maar waarschijnlijk zouden zulke opties moeten bestaan.)