I PostgreSQL är namn utan citat skiftlägeskänsliga. Alltså SELECT * FROM hello
och SELECT * FROM HELLO
är likvärdiga.
Citerade namn är dock skiftlägeskänsliga. SELECT * FROM "hello"
är inte motsvarande SELECT * FROM "HELLO"
.
För att skapa en "brygga" mellan citerade namn och namn utan citattecken är namn utan citattecken underförstått med små bokstäver, alltså hello
, HELLO
och HeLLo
motsvarar "hello"
, men inte till "HELLO"
eller "HeLLo"
(OOPS!).
Alltså när du skapar enheter (tabeller, vyer, procedurer, etc) i PostgreSQL, bör du ange dem antingen utan citat eller citerade-men-gemener.
För att konvertera befintliga tabeller/vyer/etc kan du använda något som ALTER TABLE "FOO" RENAME TO "foo"
.
Eller försök att ändra dump från MSSQL för att göra den "PostgreSQL-kompatibel" (så att den kommer att innehålla foo
s eller "foo"
s men inte "FOO"
s).
- Antingen genom att explicit redigera dumpfilen. (Om du använder Linux kan du göra
sed -r 's/"[^"]+"/\L\0/g' dumpfile
— dock varnas för att detta kommando också kan ändra text i bokstavssträngar.) - Eller genom att ange några alternativ när du hämtar dump från MSSQL. (Jag är inte säker på om det finns sådana alternativ i MSSQL, har aldrig använt det, men förmodligen borde sådana alternativ finnas.)