通过以下
备份远程数据库pg_dump dbname | gzip > filename.gz
创建了一个新数据库,我想将其导入
CREATE DATABASE new_clone;
尝试通过以下命令导入新数据库:
gunzip -c /path/to/backup/filename.sql.gz | psql new_clone
工作,导入数据库部分,但遇到错误
out of memory
没有其他信息...大多数表格和模式已经出现,但我无法解决这个问题。
我试过做一个简单的
pg_dump dbname > filename
和
psql dbname < infile
尝试没有压缩,也失败了。 我的猜测是数据库中的blob太大了?有没有办法跳过导致错误的blob?
数据库大小为10GB未压缩,2.2GB压缩。我有135GB的可用磁盘空间和32GB内存。运行ubuntu 14.04,postgres v 9.6.2
感谢任何帮助。谢谢。
答案 0 :(得分:2)
我有同样的问题。经过一番挖掘,我发现这不是psql问题,但是sdin:在将COPY ... FROM stdin
更改为COPY ... from '/path/to/file/with.dump'
后,一切都变好了。所以当你通过stdin,恕我直言,操作系统,而不是psql尝试提供psql时,尝试将所有转储加载到内存中,并且,比转储更大,比内存进程可以有,你得到错误。
PS我很抱歉我的英语不好,这不是我的母语。
答案 1 :(得分:0)
为了提高 k.o.回答,psql --no-readline
可用于避免 stdin(readline) OOM 问题。
答案 2 :(得分:0)
我最近遇到了同样的问题。我正在使用 ubuntu 20.04 并且 postgres 版本是 12。您应该尝试阅读错误的第一行。主要错误写在第一行。就我而言,缺少 postgis 脚本。结果,我收到了 OOM 错误。要修复它,请运行:
sudo apt-get install postgis postgresql-12-postgis-scripts