Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Sensibilità alle maiuscole e minuscole Postgres

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