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

前端之家收集整理的这篇文章主要介绍了sql – 从电子表格更新现有数据库值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个现有的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:\foldername\spreadsheetname.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)

猜你在找的MsSQL相关文章