sql – 从电子表格更新现有数据库值
发布时间:2020-05-24 11:40:22 所属栏目: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|
|
我有一个现有的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 我目前的想法是以类似的方式做到这一点: 基本上让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) (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Tally数据库与c#应用程序同步
- sql-server – 当SQL Server需要比Datalength更多的字节时,
- sql-server-ce-toolbox – 我可以在SQL Server Compact 4中
- Win2003下安装PHP5.2.0+MySql5.0.27+PHPMyAdmin2.9.1的配置
- sql-server – while循环触发器,循环遍历sql中表的所有列
- sql-server – 如何计算SQL Server中多个点之间的距离?
- FORMAT功能在sql server 2008 R2中不起作用
- sql-server-2008 – SQL Server合并复制的限制 – 发布到su
- R:* _join(dplyr)的标准评估
- sql-server – 用于INSERT和UPDATE的SQL Server存储过程,更
