【发布时间】:2021-06-23 08:32:53
【问题描述】:
我从 AZ Databricks Notebook 获得了很多用于在 sql 中附加/覆盖表的示例。但是没有单一的方法可以直接更新、使用查询或其他方式插入数据。
例如。我想更新(标识列)ID = 1143 的所有行,所以我需要注意的步骤是
val srMaster = "(SELECT ID, userid,statusid,bloburl,changedby FROM SRMaster WHERE ID = 1143) srMaster"
val srMasterTable = spark.read.jdbc(url=jdbcUrl, table=srMaster,
properties=connectionProperties)
srMasterTable.createOrReplaceTempView("srMasterTable")
val srMasterTableUpdated = spark.sql("SELECT userid,statusid,bloburl,140 AS changedby FROM srMasterTable")
import org.apache.spark.sql.SaveMode
srMasterTableUpdated.write.mode(SaveMode.Overwrite)
.jdbc(jdbcUrl, "[dbo].[SRMaster]", connectionProperties)
有没有其他足够的方法来达到同样的效果。
注意:上面的代码也不能像SQLServerException: Could not drop object 'dbo.SRMaster' because it is referenced by a FOREIGN KEY constraint. 那样工作,所以它看起来像删除表并重新创建......根本不是解决方案。
【问题讨论】:
-
当列 (ID) 与您的值 (1143) 匹配时,您希望将新数据插入表中还是从另一个表中复制数据?
-
嗨,我认为这个链接(datathirst.net/blog/2018/10/12/…)会有所帮助。
标签: sql-update azure-sql-database sql-insert azure-databricks