W PostgreSQL w nazwach niecytowanych nie jest rozróżniana wielkość liter. Zatem SELECT * FROM hello i SELECT * FROM HELLO są równoważne.
Jednak w nazwach cytowanych wielkość liter jest rozróżniana. SELECT * FROM "hello" jest nie odpowiednik SELECT * FROM "HELLO" .
Aby stworzyć "most" między nazwami w cudzysłowie i nazwami bez cudzysłowów, nazwy bez cudzysłowów są domyślnie pisane małymi literami, stąd hello , HELLO i HeLLo są równoważne z "hello" , ale nie do "HELLO" lub "HeLLo" (UPS!).
Dlatego podczas tworzenia encje (tabele, widoki, procedury itp.) w PostgreSQL, powinieneś określić je jako niecytowane lub w cudzysłowie, ale z małymi literami.
Aby przekonwertować istniejące tabele/widoki/itp., możesz użyć czegoś takiego jak ALTER TABLE "FOO" RENAME TO "foo" .
Lub spróbuj zmodyfikować zrzut z MSSQL, aby był „zgodny z PostgreSQL” (tak, aby zawierał foo s lub "foo" s, ale nie "FOO" s).
- Albo przez jawną edycję pliku zrzutu. (Jeśli używasz Linuksa, możesz wykonać
sed -r 's/"[^"]+"/\L\0/g' dumpfile— należy jednak pamiętać, że to polecenie może również modyfikować tekst w literałach łańcuchowych.) - Lub określając niektóre opcje podczas pobierania zrzutu z MSSQL. (Nie jestem pewien, czy są takie opcje w MSSQL, nigdy ich nie używałem, ale prawdopodobnie takie opcje powinny istnieć.)