Windows10下PostgreSQL执行\i命令导入SQL文件报Permission Denied或不存在
Windows 10 环境 PostgreSQL \i 命令导入SQL文件报错解决方案
报错根因说明
- 加引号找不到文件:单引号包裹的路径中,
\p未做转义处理,G:\\postgres\person.sql被psql解析为G:/postgresperson.sql,路径中的反斜杠被转义吞掉,导致无法匹配到实际文件 - 不加引号报权限错误:psql解析无引号的Windows路径时,会将盘符后的冒号识别为参数分隔符,错误尝试访问G盘根目录触发权限报错,并非真的缺少文件访问权限
解决方案
方案1:使用正斜杠替换反斜杠(推荐)
psql在Windows环境下原生支持正斜杠格式的路径,无需处理转义,执行以下命令即可:
\i G:/postgres/person.sql
方案2:全路径反斜杠双重转义
如果需要使用反斜杠格式的路径,需要对所有反斜杠做双重转义后用单引号包裹:
\i 'G:\\postgres\\person.sql'
注意person.sql前的反斜杠也需要替换为\\,否则仍会出现转义错误。
方案3:先切换工作目录再导入
避免全路径转义问题,先切换到SQL文件所在目录后直接导入文件名:
- 执行切换工作目录命令:
\cd G:\postgres - 直接执行导入命令:
\i person.sql
验证操作
导入前可执行\! dir G:\postgres\person.sql,确认psql可以正常识别到目标文件,再执行导入操作。
如果以上操作仍报错,可检查PostgreSQL服务的运行账户,确认该账户拥有目标文件夹的读取权限,而非仅配置当前登录用户的Everyone权限。
内容的提问来源于stack exchange,提问作者Auvee
相关产品推荐
相关产品推荐

