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 我目前的想法是以类似的方式做到这一点: 基本上让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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 部署及配置Lync Server 2013 监控功能
- sql-server – 在sql server中用“<”和“>”替换“&
- sql-server – 查找可操作SQL Server数据库的不必要索引的方
- 数据库 – Oracle Entreprise和Oracle Standard版本之间是否
- sql – 对于记录的IS NOT NULL测试在设置变量时不返回TRUE
- sql – 检索刚插入Java DB(Derby)数据库的记录的id
- sql – 在RDBMS中实现灵活的关系 – 真正的权衡是什么?
- SqlServer 监控数据库连接数方法(转自:http://www.cnblog
- 更新数据库行而不在PostgreSQL 9.2中锁定表
- sql – 来自两个select语句的Sum结果