每晚 Excel 将电子表格导入 mssql 数据库

Nightly Excel Spreadheet import into mssql database

我目前正在处理我需要创建的每晚导入,但我不确定将 update/insert 转换为当前 table 的最佳途径是什么。这一切都是在 MS SQL Server 2012 中完成的,并从另一台服务器中提取 Excel 文件。我想弄清楚如何遍历列并提取我需要的数据。如果我可以重新排列数据,我会但目前仍坚持使用现有的数据。

在我当前的 table tblHW 中,我有 PmpCount、NumberStages、Pmpmodel_pmp1、serialnum_Pmp1、pmpModel_pmp2、Pmpmodel_pmp2、[= 等列32=]、partnum_motor1、serialnumberMotor1 等……。对于无法 post 真实 table 或图片,我提前表示歉意。

示例:

|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 table.

中的 20 个部分的列

我需要以某种方式将每一行移动到 tblHW 中,但需要做这样的事情:

第一行 AN 21-919G 需要将 SN1 插入 sn_mtr1 因为它是 BOD,SN2 插入 SN_pmp1 因为它是 PMP,SN3 插入 sn_pmp2 因为这是这里的第二个 PMP。我还需要获取 pmp 计数,在本例中为 2,然后在 prt 为 PMP 时添加 attribute1_7 和 attribute2_7 以放入 numstages。

这种情况是 SSIS 存在的全部目的:集成服务!

第一个问题是为什么您需要的数据在 Excel 中,如果有更直接的路径,则可以利用它作为链接服务器(如果源是另一个 RDBMS)。

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

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

示例: