JdbcOperator

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

警告

先前,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/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/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,
    )

此條目是否有幫助?