我试图在JdbcOperator中编写多个sql语句,但不确定如何使用模板;或许多sql字符串的分隔符。 下面的代码显示TemplateNotFound。我创建了与“ dags”相同级别的“ templates”文件夹
sql_task = JdbcOperator(
task_id='sql_cmd',
jdbc_conn_id='hive_connection',
template_searchpath='/etc/dev/airflow/templates',
sql='all_sql.sql',
params={"db":'devl_df2_tsa_batch'},
dag=dag
)
答案 0 :(得分:1)
您可以通过以下方式使用它:
列表:
sql_task = JdbcOperator(
task_id='sql_cmd',
jdbc_conn_id='hive_connection',
template_searchpath='/etc/dev/airflow/templates',
sql=['select * from table1', 'select * from table2'],
params={"db":'devl_df2_tsa_batch'},
dag=dag
)
OR
SQL文件
sql_task = JdbcOperator(
task_id='sql_cmd',
jdbc_conn_id='hive_connection',
template_searchpath='/etc/dev/airflow/templates',
sql=['templates/test1.sql','templates/test2.sql'],
params={"db":'devl_df2_tsa_batch'},
dag=dag
)
其中templates/test1.sql
,templates/test2.sql
文件位于dags
文件夹中,每个文件包含1个查询。