我有两个表,有770万条记录,其他表有1.6亿条记录。我想在我的NAS驱动器上转储表(700GB+可用内存(。我使用以下命令将数据导出到csv文件:
COPY (select * from table_name) to '/path_to_nas_drive/test.csv' csv header;
在运行上述命令后,它抛出了问题
无法写入COPY数据:磁盘配额超过
它为什么抛出错误?是因为数据库服务器上的空间问题,它无法创建缓冲区/临时文件,还是有任何方法可以处理这个问题?
让我们试着缩减请求,只获取一行,以确保即使只对一行使用COPY:
COPY (select * from table_name limit 1) to '/path_to_nas_drive/test.csv' csv header;
您也可以尝试使用gzip压缩输出,如下所示:
psql -c "COPY (select * from table_name) to stdout" yourdbname | gzip > /path_to_nas_drive/test.csv.gz
这是客户端问题,而不是服务器问题"不能写入COPY数据";由CCD_ 1生成;超过磁盘配额";来自OS,然后由CCD_ 2传递。
因此,您的NAS告诉您,您不允许向其写入您想要写入的内容。也许它有足够的空间,但它不会给您,因为";你"是运行psql
的人,而不是运行PostgreSQL服务器的人。