簡體   English   中英

spark-jdbc中的准備語句

[英]Prepared statement in spark-jdbc

我試圖使用具有指定偏移量的Spark jdbc從MSSQL數據庫中讀取數據。 因此,數據應僅在指定的時間戳之后加載,該時間戳將是此偏移量。 我嘗試通過在jdbc配置中提供查詢來實現它,但是,我沒有發現使用參數化值創建預准備語句的可能性。 在這種情況下,我想參數化一個在每次應用程序啟動后都會改變的偏移量。 如何使用jdbc選項實現它?

所有數據庫配置都駐留在application.conf文件中。 這是我從數據庫中讀取的方式:

def jdbcOptions(query: String) = Map[String,String](
    "driver" -> config.getString("sqlserver.db.driver"),
    "url" -> config.getString("sqlserver.db.url"),
    "dbtable" -> s"(select * from TestAllData where update_database_time >= '2019-03-19 12:30:00.003') as subq,
    "user" -> config.getString("sqlserver.db.user"),
    "password" -> config.getString("sqlserver.db.password"),
    "customSchema" -> config.getString("sqlserver.db.custom_schema")
  )

    val testDataDF = sparkSession
      .read
      .format("jdbc")
      .options(jdbcOptions())
      .load()

相反,查詢應該看起來像這樣:

s"(select * from TestAllData where update_database_time >= $tmstp) as subq

Spark-jdbc中沒有預處理語句,因此除了在String中設置參數之外沒有其他方法:

val dayColumn = "update_database_time"
val dayValue = "2019-03-19 12:30:00.003"

s"(select * from TestAllData where $dayColumn > '$dayValue') as subq"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM