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 。确实存在于数据文件夹中这不是必需的。或者是吗?
无论如何,请点赞任何指示。
答案 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搜索数据库中的模式而非外部文件系统中的模式有关。