全部产品

如何处理云数据库 RDS PostgreSQL 版使用copy命令导入数据报错问题

更新时间:2020-08-11 15:45:38

问题描述

在云数据库 RDS PostgreSQL 版中,执行如下SQL语句导入数据。

copy mp3 (NAME,city,nation,lat,lng,url,mediatype,type) from  '/home/alex/tmp/pos.csv' with csv;

系统提示如下错误。

ERROR:  must be superuser to COPY to or from a file
HINT:  Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.

问题原因

默认copy是需要superuser的权限,云数据库RDS PostgreSQL版没有开放该权限。

解决方案

阿里云提醒您:

  • 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
  • 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
  • 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。

登录到本机执行如下命令,绕过限制。

cat [$Table_Name].csv | ~/workspace/pg94/bin/psql -h [$Host] -p [$Port] -U [$User] -c "copy [$Table_Name] from stdin"

说明

  • [$Table_Name]指数据库的表名。
  • [$Host]值要登录的RDS实例主机名或者IP地址。
  • [$Port]指端口号
  • [$User]指登录用户名

更多信息

云数据库RDS for PostgreSQL版迁移数据更多方法,请参见使用pspl命令迁移PostgreSQL数据的方法

适用于

  • 云数据库RDS PostgreSQL版

如果您的问题仍未解决,您可以在阿里云社区免费咨询,或提交工单联系阿里云技术支持。