apache-spark - spark中的jdbc更新语句
问题描述
我使用 JDBC 连接到数据库,并且正在尝试运行更新查询。首先我输入查询,然后执行它(就像我执行 SELECT 一样,它工作得很好)。
caseoutputUpdateQuery = "(UPDATE dbo.CASEOUTPUT_TEST SET NOTIFIED = 'YES') alias_output "
spark.read.jdbc(url=jdbcUrl, table=caseoutputUpdateQuery, properties=connectionProperties)
当我运行它时,出现以下错误:
A nested INSERT, UPDATE, DELETE, or MERGE statement must have an OUTPUT clause.
我试图以不同的方式解决这个问题,但总是有另一个错误。例如,我尝试通过以下方式重写查询:
caseoutputUpdateQuery = "(UPDATE dbo.CASEOUTPUT_TEST SET NOTIFIED = 'YES' OUTPUT DELETED.*, INSERTED.* FROM dbo.CASEOUTPUT_TEST) alias_output "
但我遇到了这个错误:
A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed in a SELECT statement that is not the immediate source of rows for an INSERT statement.
我试图重写它的另一种方式是:
caseoutputUpdateQuery = "(INSERT INTO dbo.UpdateOutput(OldCaseID,NotifiedOld) SELECT * FROM( UPDATE dbo.CASEOUTPUT_TEST SET NOTIFIED = 'YES' OUTPUT deleted.OldCaseID,DELETED.NotifiedOld ) AS tbl) alias_output "
但我有这个错误:
A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed inside another nested INSERT, UPDATE, DELETE, or MERGE statement.
我真的尝试了我在互联网上找到的所有东西,但没有运气。你对我如何解决这个问题并运行我的更新语句有什么建议吗?
解决方案
推荐阅读
- azure - 无法将私有注册表凭据传递到 Azure IoT Edge
- ruby-on-rails - 使用 RubyZip 生成文件并以 zip 格式下载
- android - 是否有任何一步一步的东西可以将情感分析和语音实施到我当前基于谷歌云视觉的人脸识别应用程序项目中?
- while-loop - System Verilog中while循环的额外迭代
- ios - Swift - Mopub 原生广告已成功加载,但未显示在视图中
- macos - 无法使用安装了 macports 的 MPICH mpirun 执行 MPI 程序
- jquery - 检索引导复选框的单击状态
- android - 防止网页链接打开本机应用程序,留在网页浏览器中
- c# - EF Code First-从多到多表返回记录
- ios - Stripe SDK integration using swift and flutter