PSQL 自动小写执行查询时出现问题

Having issues with PSQL automatically lower casing executed query

我在执行以下查询时遇到问题。有没有办法用 psql 查询来维护大写字母?我试过引号不起作用,我试过单引号,在这种情况下我得到一个语法错误。注意:列似乎是使用引号创建的,很好,但是我如何从命令中引用引号呢?)

psql bash CLI

psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "\copy table_name(fileName, time) FROM $OUTPUT_FILE WITH DELIMITER AS ',' NULL 'null'"

结果:

ERROR:  column "filename" of relation "table_name" does not exist

PostgreSQL 将诸如 table 名称之类的标识符视为小写,除非您引用它。

你说虽然双引号不起作用。那可能是因为你没有得到正确的报价。在 shell 中引用很难。您必须结束围绕整个查询的双引号字符串,才能开始包含双引号的单引号字符串:

psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME -c "\copy table_name("'"fileName"'", time) FROM $OUTPUT_FILE WITH DELIMITER AS ',' NULL 'null'"

您可以利用 psql 也通过标准输入接受命令这一事实,这样您就可以按如下方式编写它而不必担心引号:

psql -h $DB_HOST -p $DB_PORT -U $DB_USER -d $DB_NAME <<SQL
  \copy table_name("fileName", time) FROM $OUTPUT_FILE WITH DELIMITER AS ',' NULL 'null'
SQL