postgresql Postgres转储特定的表,并使用大写字母

brjng4g3  于 2022-11-04  发布在  PostgreSQL
关注(0)|答案(7)|浏览(465)

我试图使用-t对一个特定的表执行postgres转储。但是,该表中有一个大写字母,我得到一个“No matched tables were found”。我尝试在表名周围使用引号和双引号,但是它们不起作用。我怎样才能让pg识别大写字母呢?谢谢!

pg_dump -h hostname dbname -t tableName > pgdump.sql
biswetbf

biswetbf1#

下面是在普通模式下转储表的完整命令:

pg_dump --host localhost --port 5432 --username "postgres" --role "postgres"  --format plain  --file "complete_path_file" --table "schema_name.\"table_name\"" "database_name"

或者,您可以执行以下操作:

pg_dump -t '"tablename"' database_name > data_base.sql

请看这里的最后一页:Documentation

j9per5c4

j9per5c42#

上面的解决方案在Windows 7 x64下对我不起作用。PostgreSQL 9.4.5。但这确实起作用了,最后(叹气):

x1月0n1x日

要么...

pg_dump.exe -p 8888 --username=user -t "cms.\"FooContents\"" basdb

......或者......

pg_dump.exe -p 8888 --username=user -table="cms.\"FooContents\"" basdb
svujldwt

svujldwt3#

在cmd窗口中,如果表名包含大写字母,我必须用三个(!)双引号将其括起来。示例pg_dump -t“"“Colors”"”database〉database.colors.psql

ecfdbz9o

ecfdbz9o4#

这对我很有效:

pg_dump -f file.sql -U user -t 'schema.\"Table\"' database
e5njpo68

e5njpo685#

作为节点脚本的一部分,我必须用单引号和双引号括起来,例如:

` ... --table 'public."IndexedData"'`

被接受的解决方案在bash控制台中工作,但不是作为节点脚本的一部分,只是单引号方法。

iezvtpos

iezvtpos6#

感谢@Dirk Zabel的建议,以下内容对我很有效:

Windows 10指令集

pg_dump -d "MyDatabase" -h localhost -p 5432 -U postgres --schema=public -t """TableName""" > TableName.sql

"猛击"

pg_dump -d "MyDatabase" -h localhost -p 5432 -U postgres --schema=public -t "\"TableName\"" > TableName.sql
qqrboqgw

qqrboqgw7#

动力外壳

  • 最好(最短)*
& 'C:\Program Files\PostgreSQL\12\bin\pg_dump.exe' -d db_name -t '\"CasedTableName\"'
  • 不良(要求--%)*
& 'C:\Program Files\PostgreSQL\12\bin\pg_dump.exe' --% -d db_name -t "\"CasedTableName\""
  • 丑陋的(需要“'”)*
& 'C:\Program Files\PostgreSQL\12\bin\pg_dump.exe' -d db_name -t "\`"CasedTableName\`""

让我感到困惑的主要问题是\"的存在是绝对必要的。我以为可能是powershell或psql解析参数的方式有一个奇怪的bug,但事实证明在文档中有解释:
某些原生命令需要包含引号字符的参数。通常,PowerShell的命令列剖析会移除您提供的引号字符。剖析的参数会接着链接成单一字串,每个参数以空格分隔。然后,这个字串会指派给ProcessStartInfo对象的Arguments属性。字串中的引号必须使用额外的引号或反斜扛(\)字符逸出。
当然还有ProcessStartInfo。参数备注告诉我们:
若要在最后解析的参数中包含引号,请对每个引号进行三次转义。

相关问题