每晚Excel Spreadheet导入到mssql数据库

时间:2015-08-07 17:18:25

标签: sql-server tsql loops insert sql-server-2012

我目前正在处理我需要创建的每晚导入,但不确定更新/插入当前表的最佳路径是什么。这一切都在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。

1 个答案:

答案 0 :(得分:2)

这样的情况是SSIS存在的全部目的:Integration Services!

首先要问的是为什么你需要的数据是在Excel中,如果有更直接的路由,可以利用,作为链接服务器(如果源是另一个RDBMS)。

根据您提供的信息,我们做出以下假设: A)我们无法控制源输出,我们必须从Excel导入数据。 B)文件始终具有一致的列(可能由自动化过程创建)。

在SSIS中,您可以轻松地为Excel文件创建源连接。如果Excel文件名是动态的,则可以在导入数据之前创建脚本以修改该连接的连接字符串。然后将目标连接设置为SQL Server。最后一步是创建一个数据流任务,您可以在其中将源映射到目标列。

实施例: enter image description here