我目前正在处理一个需要创建的夜间导入,但不确定更新/插入到当前表的最佳路径是什么。这都是在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中,但需要这样做:
第一行A21-919G需要将SN1插入到sn_mtr1中,因为它是一个BOD,SN2需要插入到SN_pmp1中,因为它是PMP,而SN3需要插入到sn_pmp2中,因为它是这里的第二个PMP。我还需要获得PMP计数,在本例中是2,然后添加attribute1_7和attribute2_7,以便在put是pmp时放入数字阶段。
发布于 2015-08-10 03:19:29
我认为SSIS确实是你想在这里使用的东西。要将Excel导入Server,这是一个很好的链接- 简单交谈10简单步骤
然后,您将需要使用条件分裂和MultiCast的组合,以便根据不同的规则将数据移动到不同的字段/位置。最后,对于您的PMP计数,似乎使用罗德特任务应该涵盖您想要做的事情。
做这些事情有很多种方法,即使您决定使用SSIS来完成这些工作。您可以将数据加载到暂存表中,以便一切都是插入,然后运行SQL任务来执行所有单独的更新。或者您可以使用这种多播/条件拆分方法,然后使用Server目的地,也可以使用OLE DB命令根据数据流中您可以使用的数据获取加载或更新单个记录的信息。当然,在使用这些OLE DB命令时,需要处理性能问题,因为它们是逐行工作的,但是在数据流任务中它们是非常清楚的。
你必须努力完成对你最有效的事情。我试着加入一些我觉得很好的例子来展示如何做这些事情(Excel导入,多播,条件分裂,RowCount和OLE DB命令),所以希望在这两者之间能让你找到你需要做的事情。
https://dba.stackexchange.com/questions/110473
复制相似问题