首页 > 解决方案 > 将行写入 SQL Server

问题描述

我在 SQL Server 中有一个表。我正在尝试将数据块中的 spark 数据框附加到 SQL 表中。我能够附加新行,但问题是它随机附加到 SQL 表中。我想将新行附加到 SQL 表的末尾。我怎么做?

SQL 表

╔═════════════════════════════╗
║   Name      a   b   c   d   ║
╠═════════════════════════════╣
║1  Lisa      5   4   1   3   ║
║2  Timmy     3   2   7   2   ║  
║3  Rann      2   3   1   5   ║
║4  Bob       1   6   3   4   ║
╚═════════════════════════════╝

火花数据框

╔═════════════════════════════╗
║   Name      a   b   c   d   ║
╠═════════════════════════════╣
║1  Mark      10  3   2   4   ║
║2  Rudy      5   6   7   8   ║  
╚═════════════════════════════╝

我想要的是

╔═════════════════════════════╗
║   Name      a   b   c   d   ║
╠═════════════════════════════╣
║1  Lisa      5   4   1   3   ║
║2  Timmy     3   2   7   2   ║  
║3  Rann      2   3   1   5   ║
║4  Bob       1   6   3   4   ║
║5  Mark      10  3   2   4   ║
║6  Rudy      5   6   7   8   ║
╚═════════════════════════════╝

当我使用此代码附加时

df.write.mode("append").jdbc(url=jdbcurl, table="employee") 

我在 SQL 服务器中得到了这个结果。马克鲁迪应该在底部,但它是随机附加的。我想添加一个参数吗?

╔═════════════════════════════╗
║   Name      a   b   c   d   ║
╠═════════════════════════════╣
║1  Lisa      5   4   1   3   ║
║2  Rudy      5   6   7   8   ║
║3  Timmy     3   2   7   2   ║
║4  Mark      10  3   2   4   ║
║5  Rann      2   3   1   5   ║
║6  Bob       1   6   3   4   ║
╚═════════════════════════════╝

标签: jdbcazure-sql-databasedatabricks

解决方案


SQL 中的表没有顺序。是一套。换句话说,您可以随意相信它们是在最后添加的,但不能保证它们会根据插入顺序以任何顺序返回。

如果您想按特定顺序获取数据,您应该根据您希望查看的顺序运行带有 ORDER BY 的查询。如果您愿意,那可以是表示插入时间的列。


推荐阅读