Postgres 解决由破折号 (-) 引起的语法错误

Postgres solving a syntax error caused by a dash (-)

我正在尝试从名为 physionet-data.mimiciii_clinical.diagnoses_icd

的数据库中查询

PostgresSQL returns 出现以下错误信息:

quan.sql:273: ERROR:  syntax error at or near "`"
LINE 132: from `physionet-data.mimiciii_clinical.diagnoses_icd` icd

我认为是破折号引起的。如果我更改“for”,则会出现相同的错误

quan.sql:273: ERROR:  syntax error at or near
"'physionet-data.mimiciii_clinical.diagnoses_icd'"

关于如何解决这个问题的任何线索?

您需要使用双引号引用该架构名称:

select ...
from "physionet-data".mimiciii_clinical.diagnoses_icd

请注意,引用标识符会使其区分大小写。您需要确保创建模式时使用的字符大小写与您在此处使用的大小写相匹配。

使用需要引号的标识符通常不是一个好主意;正如您发现的那样,这需要在您以后使用它的每个地方引用它们。如果还不算太晚,我建议将架构名称更改为不需要引号的名称。