gpt4 book ai didi

sql - Postgresql - 无法将 csv 文件加载到表中

转载 作者:行者123 更新时间:2023-11-29 11:59:50 24 4
gpt4 key购买 nike

我正在尝试将几个 csv 文件加载到多个 postgresql 表中,但它们都无法正常工作并产生各种错误。

文件是公开的,位于此处:

http://www.kaggle.com/c/march-machine-learning-mania-2015/data

我在 Windows 8 机器上使用 pgAdmin 版本 1.20.0 和 psql 9.4.0。

这是我到目前为止尝试过的事情:

我正在使用 pgAdmin 并且可以创建模式和表。

然后我右键单击表格,打开导入工具,选择文件,将格式设置为 csv,单击标题复选框,将分隔符设置为“,”,然后单击“导入”,并得到一个错误在最后一个预期列之后有额外的数据。

接下来,我尝试使用命令行:

copy marchmad.regular_season_compact_results FROM 'C:/data/regular_season_compact_results.csv' CSV HEADER delimiter ',' null '\N';

并得到这个错误信息:

ERROR: could not open file "C:/data/regular_season_compact_results.csv" for reading: Permission denied
SQL state: 42501

接下来,我试着像这样在前面放一个“\”:

\copy marchmad.regular_season_compact_results FROM 'C:/data/regular_season_compact_results.csv' CSV HEADER delimiter ',' null '\N';

并得到这个错误信息:

ERROR: syntax error at or near "\"
SQL state: 42601
Character: 1

对于如何使这项工作有什么建议吗?

最佳答案

pgAdmin 中,您只能使用 copy,这是一个服务器端 SQL 命令,因此文件的权限来自服务器视角,即使服务器在 localhost 上也是如此。

您从该命令得到的错误表明 Postgres 服务器 没有访问 CSV 文件的权限。可能是您以另一个用户身份运行服务器,例如 postgres,它无法访问 CSV。如果您调整权限,使您的服务器运行的用户可以访问 CSV 文件及其所在的目录,我希望它能正常工作。

\copy 命令不起作用,因为它是可在 psql 终端中使用的特殊 psql 命令。由于它在客户端 端运行,因此通常会在您的用户下运行。因此,它很可能与下载 CSV 的用户是同一用户,因此具有访问权限。

您可以尝试使用 psql终端,如果你想那样尝试的话。一般来说,我更喜欢使用 psql 来处理复制文件,因为这样它总是在本地关注文件/权限,因此我可以轻松地将文件复制到远程服务器,而无需担心特殊情况访问服务器的文件系统。

关于sql - Postgresql - 无法将 csv 文件加载到表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28922257/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com