PSQL遇到问题会自动降低执行大写的查询

时间:2019-05-11 03:43:42

标签: psql

我在执行以下查询时遇到问题。有什么方法可以通过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

1 个答案:

答案 0 :(得分:1)

PostgreSQL除非将其引用,否则将诸如表名之类的标识符视为小写。

您说过,双引号无效。那可能是因为您没有得到正确的报价。在外壳中报价很难。您必须结束整个查询的双引号字符串,才可以开始包含双引号的单引号字符串:

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