Ошибка 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
, а не домашний каталог вашей учетной записи пользователя.