psql错误:无法打开文件“address.csv”进行阅读:没有这样的文件或目录

时间:2014-04-26 11:54:14

标签: linux postgresql csv

Linux的新手。

我正在尝试将.csv复制到PostgreSQL数据库中,

copy address from 'address.csv' delimiter ',' csv header;

我有cd到文件的位置,在psql提示符下使用\ cd [directory]命令。不成功的行动。

我关闭了那个终端窗口,在另一个终端窗口中关闭了CD到数据文件夹,然后从那里打开了psql命令。

\! pwd显示存储文件的文件夹的名称/路径。 /home/tommy/virtualenv_folder/code_data/postgresql_csv_files

\! ls显示文件名,即使使用通配符\! add*也会显示文件名。

stackoverflow.com/questions/16618299/postgres-copy-from-csv-file-no-such-file-or-directory 建议重置 search_path 。确实存在于数据文件夹中这不是必需的。或者是吗?

无论如何,请点赞任何指示。

1 个答案:

答案 0 :(得分:3)

您应该使用复制语句中的实际路径,例如

copy address from '/home/tommy/virtualenv_folder/code_data/postgresql_csv_files/address.csv'. 

还要确保postgres用户具有对该文件和目录的读取权限,或者将所有权更改为postgres,即chown postgres:postgres address.csv。我倾向于创建一个目录并为所有用户提供对它的读/写访问权限,因此我可以轻松地将数据加载到postgres中并将其再次转储回来,无论是作为我自己还是作为postgres用户,例如

chmod a+rw /var/import/postgresfiles

search_path与postgres搜索数据库中的模式而非外部文件系统中的模式有关。