【发布时间】:2015-08-07 17:18:25
【问题描述】:
我目前正在处理需要创建的每晚导入,但不确定更新/插入当前表的最佳途径是什么。这一切都在 MS SQL Server 2012 中完成,并从另一台服务器中提取 Excel 文件。我试图弄清楚如何循环遍历列并提取我需要的数据。如果我可以重新排列数据,我会,但我目前坚持我所拥有的。
在我当前的表 tblHW 中,我有诸如 PmpCount、、NumberStages、Pmpmodel_pmp1、serialnum_Pmp1、pmpModel_pmp2、Pmpmodel_pmp2、serialnum_pmp2、partnum_motor1、serialnumberMotor1 等列。对于无法发布真实的表格或图片,我提前道歉。
例子:
|Name | PmpCount| numstages| pmpmodel_pmp1| stages_pmp1| Sn_pmp1|
|AN 91-23G | 4| 500| FX2347| 250| 354197|
|BR DN 895R| 5| 521| D2442| 45| 875164|
|ALN 1-60J | 5| 521| H21342| 95| 594126|
|pmpmodel_pmp2| stages_pmp2| sn_pmp2| Partnum_mtr1| sn_mtr1|
|FX2347 | 250| 354198| NULL| NULL|
|FX17500 | 143| 102547| M7544| 4512241|
|FX17500 | 143| 458790| M7544| 4512364|
我要移入 tblHW 的信息来自 tbl Pull_Down。这是设置:
|Name | Run_ID | Part1| SN1 | Attribute1_7|
|AN 21-919G| Oct 08, 2013 / 100845| BOD| NA| 3RD U|
|FR 55-013A| Oct 17, 2013 / 100853| Pmp| 2EA3A022| 78|
|FR 55-013A| Oct 01, 2014 / 101383| Cbl| N/A| REDALEAD|
|FR 43-223J| Apr 03, 2013 / 100594| BOD| NA| 3RD U|
|VH 204 | May 17, 2014 / 101145| BOD| 3RD U|
|Part2| SN2 | Attribute2_7| Part3 | SN3 | Attribute3_7|
|Pmp | 2EA3F379| 78| Pmp| 2EA3N380| 117|
|Pmp | 2EA3C020| 117| Pmp| 2EA3Y021| 117|
|MLE | J14312161| 120| BOD| N/A| 3RD U|
|Other| NA| Pmp| 2EA2X774| 78|
|BOD | NULL| Pmp| 2EA4F075| 38|
更多信息。我以五个 excel 电子表格的形式收到这些信息,每个电子表格有 400 多列。让我最头疼的列是我需要放入 SQL 表的 20 部分列。
我需要以某种方式将每一行移动到 tblHW 中,但需要执行以下操作:
第一行AN 21-919G需要将SN1插入sn_mtr1,因为它是BOD,SN2插入SN_pmp1,因为它是PMP,SN3插入sn_pmp2,因为它是这里的第二个PMP。我还需要获取 pmp 计数,在本例中为 2,然后在 prts 为 PMP 时将属性 1_7 和属性 2_7 添加到 numstages 中。
【问题讨论】:
-
我不是专家,但也许我可以给你一个高水平的计划。您可以在数据进入 SQL Server 之前或之后格式化数据。如果你想格式化然后把它放进去,我敢打赌 SSIS 解决方案将是你最好的选择。不幸的是,我对 SSIS 不是很熟悉。另一方面,如果您想在 SQL 中执行此操作。我会创建一些临时表来保存原始 excel 数据,然后相应地编写查询以更新其他表。希望这可以帮助。如果您在编写查询时需要帮助,我相信如果不是我,也有人可以帮助您。我还建议尝试 DBA stackexchange 站点。干杯。
标签: sql-server tsql loops insert sql-server-2012