No PostgreSQL, nomes sem aspas não diferenciam maiúsculas de minúsculas. Assim,
SELECT * FROM hello
e SELECT * FROM HELLO
são equivalentes. No entanto, os nomes entre aspas diferenciam maiúsculas de minúsculas.
SELECT * FROM "hello"
é não equivalente a SELECT * FROM "HELLO"
. Para fazer uma "ponte" entre nomes entre aspas e nomes sem aspas, os nomes sem aspas são implicitamente em minúsculas, portanto,
hello
, HELLO
e HeLLo
são equivalentes a "hello"
, mas não para "HELLO"
ou "HeLLo"
(OPA!). Assim, ao criar entidades (tabelas, visualizações, procedimentos, etc) no PostgreSQL, você deve especificá-las sem aspas ou entre aspas, mas em minúsculas.
Para converter tabelas/views/etc existentes você pode usar algo como
ALTER TABLE "FOO" RENAME TO "foo"
. Ou tente modificar o dump do MSSQL para torná-lo "compatível com PostgreSQL" (para que ele contenha
foo
s ou "foo"
s, mas não "FOO"
s). - Tanto editando explicitamente o arquivo de despejo. (Se você estiver usando Linux, você pode fazer
sed -r 's/"[^"]+"/\L\0/g' dumpfile
— no entanto, esteja avisado de que este comando também pode modificar texto em literais de string.) - Ou especificando algumas opções ao obter o dump do MSSQL. (Não tenho certeza se existem essas opções no MSSQL, nunca usei, mas provavelmente essas opções deveriam existir.)