是否可以直接在外部数据库表上执行删除和更新操作,比如在 ORACLE 中,使用 Spark

Posted

技术标签:

【中文标题】是否可以直接在外部数据库表上执行删除和更新操作,比如在 ORACLE 中,使用 Spark【英文标题】:Is it possible to perform Delete and Update operations directly on External Database Tables, like in ORACLE, using Spark 【发布时间】:2018-08-28 06:47:26 【问题描述】:

我需要知道是否可以使用 Spark 删除 Oracle 数据库中表的行。 因为,我想使用同一个数据库表作为中间存储选项,一旦批处理操作完成,里面的数据应该被删除,但表应该被持久化。 其次,我想使用 Spark 在 Oracle 数据库上运行一些更新命令,所以任何帮助都会很重要。

【问题讨论】:

答案有帮助吗? 【参考方案1】:

对于 mysql,我使用以下内容进行插入。同样,您可以构建适当的更新或删除语句。需要设置jdbc props、connections等。

我假设你的意思是这个,而不是通过 DF/DS.write 追加...

mutateStatement.execute (s"insert into sample (k,v) values($val1, $val2)") 

请注意,有些人正确地指出这可能会受到 SQL 注入的影响,并且批量更新中还有准备好的语句,这更安全。例如:Using JDBC PreparedStatement.addBatch in functional Scala code

【讨论】:

以上是关于是否可以直接在外部数据库表上执行删除和更新操作,比如在 ORACLE 中,使用 Spark的主要内容,如果未能解决你的问题,请参考以下文章

Laravel where() 和 orderBy() 在外部服务器上的关系表上

oracle 看报错日志怎么看

MySQL online DDL的两个坑

MySQL online DDL的两个坑

用于向表中添加新行的存储过程,它检查值以验证它们在外部表上的值

在外部存储 Flyway 元数据表