我试图使用-t对一个特定的表执行postgres转储。但是,该表中有一个大写字母,我得到一个“No matched tables were found”。我尝试在表名周围使用引号和双引号,但是它们不起作用。我怎样才能让pg识别大写字母呢?谢谢!
pg_dump -h hostname dbname -t tableName > pgdump.sql
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
j9per5c42#
上面的解决方案在Windows 7 x64下对我不起作用。PostgreSQL 9.4.5。但这确实起作用了,最后(叹气):
要么...
pg_dump.exe -p 8888 --username=user -t "cms.\"FooContents\"" basdb
......或者......
pg_dump.exe -p 8888 --username=user -table="cms.\"FooContents\"" basdb
svujldwt3#
在cmd窗口中,如果表名包含大写字母,我必须用三个(!)双引号将其括起来。示例pg_dump -t“"“Colors”"”database〉database.colors.psql
ecfdbz9o4#
这对我很有效:
pg_dump -f file.sql -U user -t 'schema.\"Table\"' database
e5njpo685#
作为节点脚本的一部分,我必须用单引号和双引号括起来,例如:
` ... --table 'public."IndexedData"'`
被接受的解决方案在bash控制台中工作,但不是作为节点脚本的一部分,只是单引号方法。
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
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。参数备注告诉我们:若要在最后解析的参数中包含引号,请对每个引号进行三次转义。
\"
7条答案
按热度按时间biswetbf1#
下面是在普通模式下转储表的完整命令:
或者,您可以执行以下操作:
请看这里的最后一页:Documentation
j9per5c42#
上面的解决方案在Windows 7 x64下对我不起作用。PostgreSQL 9.4.5。但这确实起作用了,最后(叹气):
x1月0n1x日
要么...
......或者......
svujldwt3#
在cmd窗口中,如果表名包含大写字母,我必须用三个(!)双引号将其括起来。示例pg_dump -t“"“Colors”"”database〉database.colors.psql
ecfdbz9o4#
这对我很有效:
e5njpo685#
作为节点脚本的一部分,我必须用单引号和双引号括起来,例如:
被接受的解决方案在bash控制台中工作,但不是作为节点脚本的一部分,只是单引号方法。
iezvtpos6#
感谢@Dirk Zabel的建议,以下内容对我很有效:
Windows 10指令集
"猛击"
qqrboqgw7#
动力外壳
让我感到困惑的主要问题是
\"
的存在是绝对必要的。我以为可能是powershell或psql解析参数的方式有一个奇怪的bug,但事实证明在文档中有解释:某些原生命令需要包含引号字符的参数。通常,PowerShell的命令列剖析会移除您提供的引号字符。剖析的参数会接着链接成单一字串,每个参数以空格分隔。然后,这个字串会指派给ProcessStartInfo对象的Arguments属性。字串中的引号必须使用额外的引号或反斜扛(\)字符逸出。
当然还有ProcessStartInfo。参数备注告诉我们:
若要在最后解析的参数中包含引号,请对每个引号进行三次转义。