亚军吴*_*亚军吴 6 postgresql large-files postgresql-copy
我运行以下命令:
COPY XXX FROM 'D:/XXX.csv' WITH (FORMAT CSV, HEADER TRUE, NULL 'NULL')
Run Code Online (Sandbox Code Playgroud)
在Windows 7中,它成功导入了小于1GB的CSV文件。
如果文件大于1GB,我将收到“未知错误”。
[Code: 0, SQL State: XX000] ERROR: could not stat file "'D:/XXX.csv' Unknown error
Run Code Online (Sandbox Code Playgroud)
如何解决此问题?
Joh*_*son 23
您可以通过程序通过管道传输文件来解决此问题。例如,我只是用它从 Windows 10 和 PostgreSQL 11 上的 24GB 文件复制。
copy t(c,d) from program 'cmd /c "type x:\path\to\file.txt"' with (format text);
Run Code Online (Sandbox Code Playgroud)
这会将文本文件复制file.txt到表t、列c和d.
这里的技巧是cmd在单个命令模式下运行,/c并告诉它type输出有问题的文件。
https://github.com/MIT-LCP/mimic-code/issues/493 alistairewj于2018年11月3日发表评论• 已编辑
好的,无法统计的文件“ 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的新版本需要我更新脚本或其他内容!
对于尝试在Postgres 11中使用大于1gb的文件后搜索此Postgres错误消息的其他人,我可以确认上述@ ???的答案是正确的。这确实是一个大小问题。
但是,我尝试了一种不同于@ ???和@Loren的方法:我只是卸载了Postgres 11并安装了稳定版本的Postgres 10.7。(顺便说一下,我在Windows 10上使用,以防万一。)
我重新运行了导致错误并提示错误的原始代码,几分钟后,我用中等大小的csv文件(〜3gb)中的数据填充了新表。最初,我尝试使用每个@Loren使用CSVSplitter的方法,在直到接近用完计算机上的存储空间之前,它都可以正常工作。(感谢,《战地风云5》。)
就我而言,PGSQL 11中没有任何我依赖的版本不是10.7版,因此对于任何遇到此问题的人来说,这都是一个很好的解决方案。感谢以上每个人的贡献,尤其是对OP首先发布此内容的贡献。我治愈了巨大的头痛!
| 归档时间: |
|
| 查看次数: |
2860 次 |
| 最近记录: |