加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 从电子表格更新现有数据库值

发布时间:2020-12-12 06:51:23 所属栏目:MsSql教程 来源:网络整理
导读:我有一个现有的MSSQL数据库,其中某些列中的值需要根据包含旧数据和新数据映射的电子表格进行更新. 电子表格是这样的: | OLD DATA | NEW DATA |RECORD | A | B | C | D | A | B | C | D |1 |OLD|OLD|OLD|OLD|NEW|NEW|NEW|NEW|2 |OLD|OLD|OLD|OLD|NEW|NEW|NEW|
我有一个现有的MSSQL数据库,其中某些列中的值需要根据包含旧数据和新数据映射的电子表格进行更新.

电子表格是这样的:

| OLD DATA      | NEW DATA      |
RECORD | A | B | C | D | A | B | C | D |
1      |OLD|OLD|OLD|OLD|NEW|NEW|NEW|NEW|
2      |OLD|OLD|OLD|OLD|NEW|NEW|NEW|NEW|

其中ABCD是与数据库相关的列名,而OLD / NEW与数据相关.

因此每条线(约2500行)

与每列中的OLD匹配的数据库值需要更改为NEW

我目前的想法是以类似的方式做到这一点:
SQL Statement that Updates an Oracle Database Table from an Excel Spreadsheet

基本上让Excel制定一个替换语句列表,虽然这感觉就像处理问题的一种非常复杂的方式!

有没有办法让SQL循环通过电子表格的每一行,检查a = old,b = old2,c = old3,d = old4的所有记录,然后用适当的a = new,b = new2替换这些值,c = new3,d = new4?

解决方法

您不应该遍历电子表格中的每一行.您可以使用OPENROWSET命令(如您链接的答案)将电子表格数据加载到某种临时表中.然后,您可以针对该表运行常规UPDATE语句.

它看起来像这样

UPDATE YourTable
SET YourTable.A = ExcelTable.NewDataA,YourTable.B = ExcelTable.NewDataB,YourTable.C = ExcelTable.NewDataC,YourTable.D = ExcelTable.NewDataD
FROM YourTable
INNER JOIN OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=C:foldernamespreadsheetname.xls;','SELECT column1name,column2name,column3name,column4name
          FROM [worksheetname$]') AS ExcelTable
ON YourTable.ID = ExcelTable.ID
WHERE (YourTable.A = ExcelTable.OldDataA
  AND YourTable.B = ExcelTable.OldDataB
  AND YourTable.C = ExcelTable.OldDataC
  AND YourTable.D = ExcelTable.OldDataD)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读