sql >> Databasteknik >  >> RDS >> Sqlserver

Postgres skiftlägeskänslighet

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



  1. Skapa en tabell i MySQL

  2. Ansluter till Heroku Postgres från Spring Boot

  3. Vad är skillnaderna mellan INSERT och UPDATE i MySQL?

  4. Konfigurera en fjärransluten MySQL-databasanslutning