In PostgreSQL i nomi non tra virgolette non fanno distinzione tra maiuscole e minuscole. Quindi SELECT * FROM hello
e SELECT * FROM HELLO
sono equivalenti.
Tuttavia, i nomi citati fanno distinzione tra maiuscole e minuscole. SELECT * FROM "hello"
è non equivalente a SELECT * FROM "HELLO"
.
Per creare un "ponte" tra nomi tra virgolette e nomi non tra virgolette, i nomi non tra virgolette sono implicitamente minuscoli, quindi hello
, HELLO
e HeLLo
sono equivalenti a "hello"
, ma non a "HELLO"
o "HeLLo"
(OPS!).
Pertanto, durante la creazione entità (tabelle, viste, procedure, ecc.) in PostgreSQL, dovresti specificarle senza virgolette o con virgolette ma con lettere minuscole.
Per convertire tabelle/viste/ecc. esistenti puoi usare qualcosa come ALTER TABLE "FOO" RENAME TO "foo"
.
Oppure prova a modificare il dump da MSSQL per renderlo "compatibile con PostgreSQL" (in modo che contenga foo
s o "foo"
s ma non "FOO"
s).
- O modificando esplicitamente il file dump. (Se stai usando Linux, puoi eseguire
sed -r 's/"[^"]+"/\L\0/g' dumpfile
— tuttavia tieni presente che questo comando può anche modificare il testo in stringhe letterali.) - O specificando alcune opzioni quando si ottiene il dump da MSSQL. (Non sono sicuro che ci siano tali opzioni in MSSQL, non l'ho mai usato, ma probabilmente tali opzioni dovrebbero esistere.)