Ubuntu+VSCode环境下PostgreSQL导入CSV文件遇权限拒绝问题求助
解决PostgreSQL导入CSV的权限拒绝问题
首先纠正一个关键信息:Ubuntu系统中PostgreSQL的默认系统用户是postgres,并非你提到的"PostgreSQL",这个用户默认存在但没有交互式登录shell。
以下是三种可行的解决方案:
方案一:调整文件和目录权限,允许postgres用户读取
- 将CSV文件的所有者改为postgres用户:
sudo chown postgres /home/henka/Desktop/sql_tut1/csv_files/company_dim.csv
- 确保目录链的权限允许postgres用户访问(进入目录需要执行权限):
sudo chmod o+x /home/henka/Desktop sudo chmod o+x /home/henka/Desktop/sql_tut1 sudo chmod o+x /home/henka/Desktop/sql_tut1/csv_files sudo chmod o+r /home/henka/Desktop/sql_tut1/csv_files/company_dim.csv
方案二:使用\copy替代COPY命令
COPY是PostgreSQL服务器端执行的命令,依赖postgres系统用户的权限;而\copy是客户端命令,使用当前系统用户(henka)的权限执行,无需修改文件所有者。直接执行以下命令:
\copy skills_dim FROM '/home/henka/Desktop/sql_tut1/csv_files/company_dim.csv' WITH (FORMAT csv, HEADER true, DELIMITER ',', ENCODING 'UTF8');
VSCode的PostgreSQL插件大多支持\copy,若插件不兼容,可直接在终端用psql连接数据库后执行该命令。
方案三:将CSV文件移动到PostgreSQL默认可访问的目录
- 先查看PostgreSQL的数据目录路径:
psql -U your_db_user -d your_db_name -c 'SHOW data_directory;'
- 将CSV文件复制到该目录并修改权限:
sudo cp /home/henka/Desktop/sql_tut1/csv_files/company_dim.csv /var/lib/postgresql/14/main/ # 替换为你查到的实际路径 sudo chown postgres:postgres /var/lib/postgresql/14/main/company_dim.csv
- 执行COPY命令时使用新路径:
COPY skills_dim FROM '/var/lib/postgresql/14/main/company_dim.csv' WITH (FORMAT csv, HEADER true, DELIMITER ',', ENCODING 'UTF8');
内容的提问来源于stack exchange,提问作者user508050
相关产品推荐
相关产品推荐

