我在AWS RDS中设置了PostgreSQL,数据库名称为some_files
DB的用户名是mobileuser
。它已获得超级用户权限
我想每天在名为data_table
的表中复制csv文件。所以,我写了一个python脚本(使用psycopg2),它将连接到这个数据库并复制它。
我尝试使用COPY
命令。但收到错误
COPY mobile user.data_table FROM 'csv_location';
它给了我错误,我需要成为超级用户才能执行此操作。根据{{3}}
RDS is a managed service and in order to prevent situations that compromise that service, localhost access is not permitted. The Postgres "COPY" command causes the server itself to read/write files -- potentially directly on the Postgres host. Therefore it is restricted.
An alternative is to use the client based, psql instruction "\copy". Documentation for that command can be found in the Postgres online manual.
所以我尝试使用\copy
psql
命令
terminal_command = "psql -h rds_hostname -U mobileuser -w -d some_files -c \copy "+schema_name+"."+table_name+" FROM 'csv_location' DELIMITER '|' CSV HEADER"
subprocess.call(terminal_command,shell=True)
我将.pgpass文件添加到我的主目录
*:*:*:*:my_password
权限为600
但是,它给了我错误psql: fe_sendauth: no password supplied
我正在使用root
用户
答案 0 :(得分:0)
你是......
以
运行python脚本root
用户
(为什么?).pgpass
文件必须位于root
的主目录中,不是您用户帐户的主目录。