【问题标题】:How to add double quotes in table names using postgresql query?如何使用 postgresql 查询在表名中添加双引号?
【发布时间】:2019-09-16 19:11:35
【问题描述】:

我已将表和架构从 oracle 迁移到 postgresql。架构名称和表名称都包含双引号。如何使用 psql 命令选择特定模式中的表名,即

psql -U enterprisedb -d test -c "select count(*) from "HISTORY"."EMP";"

我尝试了以下方法:-

psql -U enterprisedb -d test -c "select count(*) from "HISTORY"."EMP";"
psql -U enterprisedb -d test -c "select count(*) from "||HISTORY||"."||EMP||";"
psql -U enterprisedb -d test -c "select count(*) from ""HISTORY"".""EMP"";"

以下是我尝试过的代码:-

psql -U enterprisedb -d test -c "select count(*) from "HISTORY"."EMP";"
psql -U enterprisedb -d test -c "select count(*) from "||HISTORY||"."||EMP||";"
psql -U enterprisedb -d test -c "select count(*) from ""HISTORY"".""EMP"";"

我希望 psql 命令获取数据。当我使用双引号时,它找不到表。如何在 psql 命令中使用双引号。 我可以在登录到选择查询工作的服务器时获取数据。但我想使用 psql 命令来工作和获取详细信息。

【问题讨论】:

  • 尝试在引号前加一个反斜杠。
  • 使用此处的文档来避免大部分引用/转义的痛苦:stackoverflow.com/questions/11250590/…
  • 试过像psql -U enterprisedb -d test -c "select count(*) from 'HISTORY'.'EMP';"这样的单引号吗?
  • 顺便说一句:您的表名是否包含引号,或者您是否使用引号来处理(愚蠢的)全大写表名?

标签: postgresql


【解决方案1】:

您可以使用此处的文档,该文档保留所有引号:


#!/bin/sh
psql -U enterprisedb -d test <<ZZZZ
        select count(*) from "HISTORY"."EMP"
        ;
ZZZZ

【讨论】:

  • psql -U enterprisedb -d test -c 'select count(*) from "HISTORY"."EMP";'使用单引号而不是双引号
  • 如果您的查询需要单引号和双引号,这将变得很困难。
  • 如果两者都需要,那么查询也需要修改。至于现在我的要求满足了。
猜你喜欢
  • 2021-01-19
  • 1970-01-01
  • 2021-11-11
  • 2012-10-14
  • 1970-01-01
  • 2019-05-13
  • 2011-09-13
  • 2019-09-08
  • 1970-01-01
相关资源
最近更新 更多