【发布时间】:2019-12-14 06:51:10
【问题描述】:
在 Azure Databricks 中,表已在 Azure SQL 仓库中创建,我想在我的作业运行时对 azure sql 数据库中的现有数据执行更新或覆盖其内容
我可以追加,但我在执行更新/覆盖以执行 etl 时遇到问题。 我已经尝试了以下方法,但它删除了表格并尝试使用一组新记录重新创建,这不是我想要的。
def insupd(df,tabname):
df.write.mode("overwrite") \
.format("jdbc") \
.option("url", jdbcUrl) \
.option("dbtable", tabname) \
.option("user",jdbcUsername) \
.option("password", jdbcPassword) \
.option("driver", "com.microsoft.sqlserver.jdbc.SQLServerDriver") \
.save()
return True
需要知道在我的情况下如何执行更新/覆盖。另外请让我知道需要导入库。
【问题讨论】:
-
您可以使用以下语法使用合并表
MERGE INTO logs USING updates ON logs.uniqueId = updates.uniqueId WHEN NOT MATCHED THEN INSERT *link -
感谢 Praveen,我正在尝试,但我将如何将最终结果发布到数据库。合并表也指数据库中的实际表?在这种情况下,您能否准确分享我需要使用的步骤(要使用哪个库,如何提供数据库凭据)。我在 Azure SQL 数据库中有插入/更新的表。我得到了合并语法,但我不知道实现相同的确切实现步骤。
-
sudipta 请通过此链接link 它将提供有关如何更新/覆盖 sql 数据库的详细信息。如果您仍然遇到任何问题,请给我评论。
-
覆盖所有内容?
标签: python azure-sql-database databricks