spark-sql数据同步到关系数据库,truncate表实现咨询?

spark-sql做数据同步从大数据平台到关系数据库,采用jdbc方式同部数据表,要求关系数据库表不能重新创建,其代码说明如下:jdbcDF.write \.format("jdbc") \\ .mode("overwrite") \\ .***option("truncate", "true")*** \\ .option("url", "jdbc:db2:dbserver") \\ .option("dbt...显示全部

spark-sql做数据同步从大数据平台到关系数据库,采用jdbc方式同部数据表,要求关系数据库表不能重新创建,其代码说明如下:
jdbcDF.write \

.format("jdbc") \\
.mode("overwrite") \\
.***option("truncate", "true")*** \\
.option("url", "jdbc:db2:dbserver") \\
.option("dbtable", "schema.tablename") \\
.option("user", "username") \\
.option("password", "password") \\
.save()

以上同步查询“sql\core\src\main\scala\org\apache\spark\sql\execution\datasources\jdbc\JdbcUtils.scala”,文件
/**

  • Truncates a table from the JDBC database.
    */

def truncateTable(conn: Connection, table: String): Unit = {

val statement = conn.createStatement
try {
  statement.executeUpdate(s"TRUNCATE TABLE $table")
} finally {
  statement.close()
}

}

此清表为“TRUNCATE TABLE tabname”,但 db2 要求有immediate参数
问下:
1.如何添加immediate参数,或有其他方式可以清空表吗,能写delete吗?
2.或spark.sql 在DB2上怎么直接执行sql语句 “TRUNCATE TABLE tabname immediate” 或 “delete from tabname ”

收起
参与3

返回zhuqibs的回答

zhuqibszhuqibs软件开发工程师Adidas

表要分区啊,就能truncate分区了啊,尽量不要用delete

互联网服务 · 2020-04-30
浏览1342

回答者

zhuqibs
软件开发工程师Adidas
擅长领域: 云计算服务器存储

zhuqibs 最近回答过的问题

回答状态

  • 发布时间:2020-04-30
  • 关注会员:2 人
  • 回答浏览:1342
  • X社区推广