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

问题描述

在云数据库 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版没有开放该权限。

解决方案

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

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版