带有Apache Airflow的JdbcOperator

时间:2019-01-21 16:13:44

标签: airflow

我试图在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
)

1 个答案:

答案 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.sqltemplates/test2.sql文件位于dags文件夹中,每个文件包含1个查询。