Ошибка PostgreSQL - psql: fe_sendauth: пароль не указан

У меня есть настройка PostgreSQL в AWS RDS с именем базы данных как some_files,
Имя пользователя БД mobileuser, Ему предоставлены привилегии суперпользователя.

Я хочу скопировать CSV-файл в таблице под названием data_table ежедневно. Итак, я написал скрипт на python (используя psycopg2), который подключался к этой базе данных и копировал ее. Я пытался с помощью COPY команда. Но получил ошибку

COPY mobile user.data_table FROM 'csv_location';

Это дало мне ошибку, что я должен быть суперпользователем для выполнения этого действия. Согласно https://forums.aws.amazon.com/thread.jspa?threadID=141798

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Я использую скрипт Python, используя root пользователь

1 ответ

Пока ты...

запуск сценария Python как root пользователь

(Почему .pgpass файл должен быть в домашнем каталоге root, а не домашний каталог вашей учетной записи пользователя.

Другие вопросы по тегам