每晚 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 服务器。最后一步是创建一个数据流任务,您可以在其中将源映射到目标列。
示例:
我目前正在处理我需要创建的每晚导入,但我不确定将 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 服务器。最后一步是创建一个数据流任务,您可以在其中将源映射到目标列。
示例: