使用 Spark 截断 Oracle 表

Posted

技术标签:

【中文标题】使用 Spark 截断 Oracle 表【英文标题】:Truncate Oracle table using Spark 【发布时间】:2020-06-19 18:27:40 【问题描述】:

我的第一个问题在这里!

我正在学习 Spark,到目前为止非常棒。现在我正在使用 DF.write.mode(“append”).jdbc 向 Oracle 写一些 DF

现在,我需要截断表格,因为我不想追加。如果我使用“覆盖”模式,它将删除表并创建一个新表,但我必须重新授予用户才能访问它。不好。

我可以使用 spark SQL 在 Oracle 中执行截断之类的操作吗?公开征求意见!谢谢你的时间。

【问题讨论】:

【参考方案1】:

有一个选项可以让 Spark 截断目标 Oracle 表而不是删除它。你可以找到语法https://github.com/apache/spark/pull/14086

spark.range(10).write.mode("overwrite").option("truncate", true).jdbc(url, "table_with_index", prop)

根据 Spark、Oracle 和 JDBC 驱动程序的版本,您可以使用其他参数在级联上进行截断,如您在 https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html 中看到的那样

根据我的经验,这适用于某些数据库引擎,并且很大程度上取决于您使用的 JDBC,因为并非所有引擎都支持它

希望对你有帮助

【讨论】:

以上是关于使用 Spark 截断 Oracle 表的主要内容,如果未能解决你的问题,请参考以下文章

使用“锁定”截断/填充从 Oracle 中的视图填充表

oracle针对truncate截断表之后要如何恢复数据?急啊!

Spark 2.0.0 使用 jdbc 从 Redshift 表中截断

无法删除或截断 oracle 中的表

在一个命令中截断 MySQL 数据库中的所有表?

Oracle SQL FGA sys_context('userenv','current_sql') 被截断