迁移 Oracle 到 PostgreSQL: 标识符区分大小写

七月 28, 2023

对于 Oracle 和 PostgreSQL,对象名称区分大小写的行为是不同的。Oracle 名称不区分大小写。PostgreSQL 名称区分大小写。

默认情况下,可以对 PostgreSQL 使用小写的对象名称。在大多数情况下,您需要在对象转换到 PostgreSQL 时将模式、表和列名称更改为小写。

若要具有大写名称,必须将对象名称放在双引号内。

例如,要在 PostgreSQL 中创建一个名为EMPLOYEES(大写)的表,您应该使用以下

CREATE TABLE "EMPLOYEES" (
  EMP_ID NUMERIC PRIMARY KEY,
  EMP_FULL_NAME VARCHAR(60) NOT NULL,
  AVG_SALARY NUMERIC NOT NULL);

以下命令创建一个名为 employees(小写)的表。

CREATE TABLE EMPLOYEES (
  EMP_ID NUMERIC PRIMARY KEY,
  EMP_FULL_NAME VARCHAR(60) NOT NULL,
  AVG_SALARY NUMERIC NOT NULL);

如果不使用双引号,PostgreSQL 会以小写形式查找对象名称。对于不使用双引号的CREATE命令,PostgreSQL 会创建具有小写名称的对象。因此,若要创建、查询或操作大写(或混合)对象名称,请使用双引号。