我目前正在处理我需要创建的每晚导入,但不确定更新/插入当前表的最佳路径是什么。这一切都在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 spreadhsheets,每个包含400多列。给我最头疼的列是我需要放入SQL表的20部分列。
我需要以某种方式将每一行移动到tblHW,但需要做这样的事情:
第一行AN 21-919G需要将SN1插入sn_mtr1,因为它是BOD,SN2进入SN_pmp1,因为它是PMP,SN3进入sn_pmp2,因为它是第二个PMP。我还需要获取pmp计数,在这种情况下为2,然后在prts为PMP时添加attribute1_7和attribute2_7以放入numstages。
答案 0 :(得分:2)
这样的情况是SSIS存在的全部目的:Integration Services!
首先要问的是为什么你需要的数据是在Excel中,如果有更直接的路由,可以利用,作为链接服务器(如果源是另一个RDBMS)。
根据您提供的信息,我们做出以下假设: A)我们无法控制源输出,我们必须从Excel导入数据。 B)文件始终具有一致的列(可能由自动化过程创建)。
在SSIS中,您可以轻松地为Excel文件创建源连接。如果Excel文件名是动态的,则可以在导入数据之前创建脚本以修改该连接的连接字符串。然后将目标连接设置为SQL Server。最后一步是创建一个数据流任务,您可以在其中将源映射到目标列。