Windows命令行导出PostgreSQL表:如何转义双引号
解决Windows下psql导出CSV时大小写敏感表名的转义问题
针对你遇到的带双引号的大小写敏感表名在Windows命令行无法正确转义的问题,分CMD和PowerShell两种环境给出非交互式解决方案:
CMD环境
CMD中需要用两个连续双引号来表示一个双引号,同时将整个-c的SQL命令用双引号包裹。示例命令:
./psql.exe -U 你的用户名 -d 目标数据库名 -c "COPY (SELECT * FROM ""MyTable"") TO 'c:/out.csv' WITH (FORMAT CSV, HEADER);"
- 说明:
""MyTable""会被psql解析为"MyTable",符合PostgreSQL大小写敏感表名的要求;WITH (FORMAT CSV, HEADER)可选,用于导出带表头的CSV。
PowerShell环境
PowerShell有两种可行的转义方式:
方式1:用单引号包裹SQL命令
单引号内的双引号无需转义,但单引号本身需要用两个连续单引号转义:
./psql.exe -U 你的用户名 -d 目标数据库名 -c 'COPY (SELECT * FROM "MyTable") TO ''c:/out.csv'' WITH (FORMAT CSV, HEADER);'
方式2:用双引号包裹SQL命令,内部双引号用反引号`转义
./psql.exe -U 你的用户名 -d 目标数据库名 -c "COPY (SELECT * FROM `"MyTable`") TO 'c:/out.csv' WITH (FORMAT CSV, HEADER);"
额外注意事项
- 必须通过
-d指定目标数据库,-U指定用户名,避免连接到默认数据库找不到目标表; - 输出路径可以用正斜杠
/或双反斜杠\\,PostgreSQL在Windows环境下均支持; - 如果不需要表头,可以去掉
WITH (FORMAT CSV, HEADER)部分。
内容的提问来源于stack exchange,提问作者Master_T
相关产品推荐
相关产品推荐

