我正在使用PostgresOperator创建一个任务,我想设置ON_ERROR_STOP = 1,有没有办法在PostgresOperator的参数中传递它,或者我应该把它放在我的文件" query.sql&#中34;直接?
my_operator = PostgresOperator(
task_id='my_operator',
dag=dag,
postgres_conn_id='my_server',
sql="sql/query.sql")
例如在bash中,我可以这样做:
psql -v "ON_ERROR_STOP=1"
或者有一种简单的方法来添加
\set ON_ERROR_STOP on
\unset ON_ERROR_STOP
我的查询周围没有编辑query.sql文件?
谢谢!
答案 0 :(得分:3)
我对postgres不是很熟悉,但如果你可以将\set ON_ERROR_STOP
和\unset ON_ERROR_STOP
发送到postgres,就像你发送任何其他sql语句一样,你总是可以这样做:
my_operator = PostgresOperator(
task_id='my_operator',
dag=dag,
postgres_conn_id='my_server',
sql=["\set ON_ERROR_STOP on","sql/query.sql", "\unset ON_ERROR_STOP"])
使用dbapi_hook
(postgres_hook
使用),您可以通过列表发送多个SQL语句,它们将按照您在列表中指定的顺序在同一会话中执行。