V PostgreSQL neoznačená jména nerozlišují malá a velká písmena. Tedy SELECT * FROM hello
a SELECT * FROM HELLO
jsou ekvivalentní.
U jmen v uvozovkách se však rozlišují velká a malá písmena. SELECT * FROM "hello"
není ekvivalentní SELECT * FROM "HELLO"
.
Aby se vytvořil "most" mezi jmény v uvozovkách a jmény v uvozovkách, jména v uvozovkách jsou implicitně malá, takže hello
, HELLO
a HeLLo
jsou ekvivalentní "hello"
, ale ne na "HELLO"
nebo "HeLLo"
(OOPS!).
Tedy při vytváření entity (tabulky, pohledy, procedury atd.) v PostgreSQL, měli byste je zadat buď bez uvozovek, nebo v uvozovkách s malými písmeny.
Chcete-li převést existující tabulky/pohledy/atd., můžete použít něco jako ALTER TABLE "FOO" RENAME TO "foo"
.
Nebo zkuste upravit výpis z MSSQL tak, aby byl „kompatibilní s PostgreSQL“ (takže bude obsahovat foo
s nebo "foo"
s, ale ne "FOO"
s).
- Buď explicitní úpravou souboru výpisu. (Pokud používáte Linux, můžete použít
sed -r 's/"[^"]+"/\L\0/g' dumpfile
— upozorňujeme však, že tento příkaz může také upravit text v řetězcových literálech.) - Nebo zadáním některých možností při získávání výpisu z MSSQL. (Nejsem si jistý, jestli takové možnosti v MSSQL existují, nikdy jsem to nepoužil, ale pravděpodobně by takové možnosti měly existovat.)