Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Sensibilidade a maiúsculas e minúsculas do Postgres


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.)