错误:无法统计文件“XX.csv”:未知错误

问题描述 投票:2回答:3

我运行这个命令:

COPY XXX FROM 'D:/XXX.csv'  WITH (FORMAT CSV, HEADER TRUE, NULL 'NULL')

在Windows 7中,它成功导入小于1GB的CSV文件。

如果文件大于1GB,我会收到“未知错误”。

[Code: 0, SQL State: XX000]  ERROR: could not stat file "'D:/XXX.csv'  Unknown error

我该如何解决这个问题?

postgresql large-files postgresql-copy
3个回答
6
投票

https://github.com/MIT-LCP/mimic-code/issues/493 alistairewj评论于2018年11月3日•►编辑

好吧,无法使用stat文件“CHARTEVENTS.csv”:未知错误实际上是PostgreSQL 11中的一个错误。它会调用fstat()以确保该文件不是目录,不幸的是fstat()是一个32位程序,无法处理像chartevents这样的大文件。我使用PostgreSQL 10.5测试了Windows上的构建,但我没有收到此错误,因此我认为这是相当新的。

最好的解决方法是保持文件压缩(即将它们保存为.csv.gz文件)并使用7zip直接从压缩文件加载数据。在测试中,这似乎仍然有效。这里有一个非常详细的教程如何:https://mimic.physionet.org/tutorials/install-mimic-locally-windows/

上面的简要版本是保留.csv.gz文件,将7zip二进制文件添加到Windows环境路径,然后调用postgres_load_data_7zip.sql文件加载数据。您可以在所有内容之后使用postgres_checks.sql文件,以确保正确加载所有数据。

编辑:对于您以后的错误,您正在使用此7zip方法,我不知道为什么它没有加载。尝试重新加载ADMISSIONS.csv.gz文件并查看它是否仍然会引发相同的错误。也许有一个新版本的7zip需要我更新脚本或其他东西!


2
投票

对于在Postgres 11中尝试使用> 1gb文件后搜索Postgres错误消息的任何人,我可以确认@亚军吴的上述答案是正确的。这确实是一个规模问题。

不过,我尝试了一种不同于@亚军吴和@Loren的方法:我只是卸载了Postgres 11并安装了稳定版的Postgres 10.7。 (顺便说一句,我在Windows 10上,以防万一。)

我重新运行了提示错误的原始代码,几分钟后,我用一个中等大小的csv文件(~3gb)填写了一个新表。我最初尝试使用@Loren的CSVSplitter,它工作正常,直到我的机器上的存储空间不足。 (谢谢,战地5)

在我的情况下,PGSQL 11中没有任何我依赖的东西,而不是版本10.7,所以我认为对于遇到这个问题的其他人来说这可能是一个很好的解决方案。感谢上面的每个人做出贡献,特别是OP首先发布这个。我治好了巨大的头痛!


1
投票

使用pgAdmin和AWS,我使用CSVSplitter分割成小于1GB的文件。瘸子,但工作。 pgAdmin import附加到现有表。 (将转义字符从'更改为'以避免由于源文件中的不带引号的文本而导致的错误。通常我在LibreOffice中应用引号,但这些文件太大而无法打开。)

© www.soinside.com 2019 - 2024. All rights reserved.