JdbcOperator

Java 数据库连接 (JDBC) 是 Java 编程语言的应用程序编程接口 (API),它定义了客户端如何访问数据库。

警告

以前,JdbcOperator 用于执行此类操作。但目前 JdbcOperator 已弃用,并将在未来版本的提供程序中删除。请考虑尽快切换到 SQLExecuteQueryOperator。

先决条件任务

要使用此操作符,您需要

  • 安装 python 模块 jaydebeapi: .. code-block:: bash

    pip install apache-airflow[jdbc]

  • 安装 JVM 并添加 JAVA_HOME 环境变量。

  • 安装数据库的 JDBC 驱动程序。

一旦满足这些先决条件,您应该能够运行此 Python 代码段(将变量值替换为与您的驱动程序相关的变量值)。

如果缺少 jaydebeapi 模块或驱动程序不可用,其他错误消息将通知您。Connection Refused 错误表示连接字符串指向没有数据库侦听新连接的主机。

driver_class = "com.exasol.jdbc.EXADriver"
driver_path = "/opt/airflow/drivers/exasol/EXASolution_JDBC-7.0.2/exajdbc.jar"
connection_url = "jdbc:exa:localhost"
credentials = ["", ""]

conn = jaydebeapi.connect(
    driver_class,
    connection_url,
    credentials,
    driver_path,
)

用法

使用 SQLExecuteQueryOperator 对可通过 JDBC 驱动程序访问的数据库(或数据存储)执行命令。

JDBC 连接 必须作为 conn_id 传递。

tests/system/providers/jdbc/example_jdbc_queries.py[源代码]

    insert_data = SQLExecuteQueryOperator(
        task_id="insert_data",
        sql="insert into my_schema.my_table select dt, value from my_schema.source_data",
        conn_id="my_jdbc_connection",
        autocommit=True,
    )

参数 sql 可以接收一个字符串或一个字符串列表。每个字符串可以是一个 SQL 语句或对模板文件的引用。模板引用以“.sql”结尾来识别。

参数 autocommit 如果设置为 True,将在每个命令后执行提交(默认为 False

模板

您可以使用 Jinja 模板 来参数化 sql

tests/system/providers/jdbc/example_jdbc_queries.py[源代码]

    delete_data = SQLExecuteQueryOperator(
        task_id="delete_data",
        sql="delete from my_schema.my_table where dt = {{ ds }}",
        conn_id="my_jdbc_connection",
        autocommit=True,
    )

此条目有帮助吗?