使用psql执行SQL文件报首行语法错误,PGAdmin可正常运行该文件
解决psql执行SQL文件时的编码BOM错误
这确实是编码问题,具体是**UTF-8 BOM(字节顺序标记)**导致的。pgAdmin 4.8会自动忽略UTF-8文件开头的BOM,但psql会把BOM对应的字节解析成ÿ_/这类乱码字符,当作SQL语句的一部分,所以无论你调整代码位置,错误都会指向第1行。
解决方法:
用文本编辑器移除BOM
使用支持编码设置的编辑器(如VS Code、Notepad++)打开SQL文件:- VS Code:点击右下角的编码标识(如「UTF-8」),选择「通过编码重新打开」→「UTF-8」,再选择「通过编码保存」→「UTF-8(无BOM)」。
- Notepad++:菜单栏选择「编码」→「转为UTF-8无BOM编码」,保存文件即可。
通过psql命令指定编码
若不想修改文件,可在执行命令时指定文件编码(适用于带BOM的UTF-8文件):psql -d 你的数据库名 -U 用户名 -f C:/FolderName/FileName.sql -W --encoding=UTF8注:该方法兼容性不如移除BOM彻底,优先推荐第一种方法。
PowerShell命令移除BOM(Windows环境)
直接通过命令行工具移除文件开头的BOM:$content = Get-Content -Path "C:/FolderName/FileName.sql" -Raw $utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $false [System.IO.File]::WriteAllLines("C:/FolderName/FileName.sql", $content, $utf8NoBomEncoding)
内容的提问来源于stack exchange,提问作者Venkataraman R
相关产品推荐
相关产品推荐

