sql >> Base de Datos >  >> RDS >> Sqlserver

Sensibilidad de mayúsculas y minúsculas de Postgres

En PostgreSQL, los nombres sin comillas no distinguen entre mayúsculas y minúsculas. Así SELECT * FROM hello y SELECT * FROM HELLO son equivalentes.

Sin embargo, los nombres entrecomillados distinguen entre mayúsculas y minúsculas. SELECT * FROM "hello" es no equivalente a SELECT * FROM "HELLO" .

Para hacer un "puente" entre los nombres entre comillas y los nombres sin comillas, los nombres sin comillas se escriben implícitamente en minúsculas, por lo tanto hello , HELLO y HeLLo son equivalentes a "hello" , pero no a "HELLO" o "HeLLo" (¡UPS!).

Así, al crear entidades (tablas, vistas, procedimientos, etc.) en PostgreSQL, debe especificarlas sin comillas o entre comillas pero en minúsculas.

Para convertir tablas/vistas/etc existentes, puede usar algo como ALTER TABLE "FOO" RENAME TO "foo" .

O intente modificar el volcado de MSSQL para que sea "compatible con PostgreSQL" (para que contenga foo s o "foo" s pero no "FOO" s).

  • Ya sea editando explícitamente el archivo de volcado. (Si está usando Linux, puede hacer sed -r 's/"[^"]+"/\L\0/g' dumpfile — sin embargo, tenga en cuenta que este comando también puede modificar el texto en cadenas literales).
  • O especificando algunas opciones al obtener un volcado de MSSQL. (No estoy seguro de si hay tales opciones en MSSQL, nunca lo usé, pero probablemente deberían existir tales opciones).