gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 20:00:43 25 4
gpt4 key购买 nike

我有一个现有的 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 =新2、c=新3、d=新4?

最佳答案

您不需要循环遍历电子表格中的每一行。您可以使用 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)

关于sql - 从电子表格更新现有数据库值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14814098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com