Я пытаюсь использовать хук copy_expert
здесь: https://airflow.apache.org/docs/stable/_modules/airflow/hooks/postgres_hook.html, но я не понимаю синтаксис и у меня нет примера для подражания. Моя цель - загрузить CSV в AWS экземпляр RDS, работающий Postgres.
hook_copy_expert = airflow.hooks.postgres_hook.PostgresHook('postgres_amazon')
def import_to_postgres():
sql = f"DELETE FROM amazon.amazon_purchases; COPY amazon.amazon_purchases FROM '{path}' DELIMITER ',' CSV HEADER;"
hook_copy_expert(sql, path, open=open)
t4 = PythonOperator(
task_id = 'import_to_postgres',
python_callable = import_to_postgres,
dag = dag,
)
Когда я запускаю это, я получаю сообщение об ошибке name 'sql' is not defined
. Может кто-нибудь помочь мне понять, что я делаю не так?
Редактировать: я получил хук для запуска, но получил ошибку:
ERROR - must be superuser or a member of the pg_read_server_files role to COPY from a file
HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.
Я думал, что весь смысл использования хука Postgres заключается в использовании команды COPY
в SQL без статуса суперпользователя? Что я делаю неправильно?