PostgreSQL恢复错误:"语法错误在或接近"x"

我得到我的PostgreSQL数据库备份使用以下命令:

pg_dump --encoding utf8 "host=localhost port=5432 
    dbname=employee user=postgres" > C:\backup\employee.sql

注意:我尝试使用和不使用——encoding参数。也尝试使用许多不同的文件格式作为备份:dump tar等。

然后我尝试恢复数据库使用以下命令:

psql -e -h 127.0.0.1 -p 5432 -U postgres -d employee -f C:\backup\employee.sql

在恢复过程中控制台有很多行,但在此日志的末尾显示以下错误:

备份psql: C: \ \员工。sql:1: ERROR: ERROR at or near "?s”

1号线:? s-ebSG: 9 loios3“s”des9“e3轻轨交通{0}0 se”我”““D13mispRio aild{…

我该如何补救呢?我可能通过conv转换备份文件编码,但因为我使用Windows,我不能使用它。

更新:

PostgreSQL 12。6 on x86_64-pc-linux-gnu编译by Debian clang version 10。0。1 64位

Postgres版本我恢复到:PostgreSQL 11。12 (Debian 11。12-1。pgdg90+1)在x86_64-pc-linux-gnu编译的gcc (Debian 6。3。0-18+deb9u1) 6。3。0 20170516 64位

pg_dump版本我正在使用:我有一个看容器inspec pg_dump版本,但不能得到pg_dump文件夹。

###这是一个典型的错误,因为事实上,PostgerSQL不能执行二进制备份,而只是一个转储,这是一个表的行值的副本。所以字面量是摘录,因为它和数字或日期被转换成字面量。然后添加SQL命令以重新创建结构和insert。

结果是一个文本文件,可以解释为一个SQL脚本,以重新构建数据库。

但这种方法的一个主要缺点是……转储文件必须以适当的编码方式进行编码,以避免在读取器进程将这些字节解释为非打印命令(如回车、换行……)的情况下,某些字节组合可能会驱动文件被恢复。

在其他数据库,如SQL Server,没有转储,但只有二进制备份和二进制页面只被替换从备份文件到目标数据文件,这避免了所有这些麻烦。

因此,即使在提取数据或导入数据以重新创建数据库时,使用推荐的编码进行转储时也要小心。

阅读全文

▼ 版权说明

相关文章也很精彩
推荐内容
更多标签
相关热门
全站排行
随便看看

错说 cuoshuo.com —— 程序员的报错记录

部分内容根据CC版权协议转载;网站内容仅供参考,生产环境使用务必查阅官方文档

辽ICP备19011660号-5

×

扫码关注公众号:职场神器
发送: 1
获取永久解锁本站全部文章的验证码