使用 SSIS,如何将新数据从 Excel sheet 插入到我现有的 SQL 服务器 table
Using SSIS, how to insert new data from Excel sheet into my existing SQL Server table
我已经使用 SSIS 从 Excel 文件中将一些数据导入到我的 SQL 服务器 table 中。因为它是一份损益表报告,所以它有一个 header 命名为交易名称、地址会计年度等。
在 SSIS 中,我使用了 OLE DB 源并使用了类似
的查询
Select * from [Sheet1$A10:E]
所以数据已经被提取了。但是您需要插入交易名称和会计年度信息以及其他数据,例如
Trader FYear AccNo AccName July August September
a 2014 4-0000 In
a 2014 4-0500 Ad ,514.06 ,521.23 ,296.62
a 2014 4-1000 Me ,085.78 ,676.20 ,150.87
a 2014 4-1300 Ro ,876.20 ,956.70 ,819.04
a 2014 4-2000 Gr ,540.76 ,978.63 ,272.24
我可以使用 OLE DB 源从 Excel sheet 中获取交易者和 FYear,SQL 是
select * from [Sheet1$a1:a8]
并使用条件拆分我可以将它们分开。但我实际上并不知道如何将该数据插入到 table 的每一列,就像上面那样。
还有一件事,如果我将查询写成
insert into tblA(Trader, FYear, AccNo, AccName, July, August, September)
select
'a', '2014', tblB.AccNo, tblB.AccName,
tblB.July, tblB.August, tblB.September;
然后,它可以在 SQL 服务器 table 中工作,但是谁能帮我插入这两列数据,就像上面 table 一样?无论如何谢谢
![在此处输入图片描述][1]
Trading Name(a)
Address1
Address2
Profit & Loss Statement
Fiscal Year(2014)
AccNo AccName July August September
4-0000 In
4-0500 Ad ,514.06 ,521.23 ,296.62
4-1000 Me ,085.78 ,676.20 ,150.87
4-1300 Ro ,876.20 ,956.70 ,819.04
4-2000 Gr ,540.76 ,978.63 ,272.24
4-3500 B [=18=].00 [=18=].00 [=18=].00
4-4000 P ,576.76 ,110.66 ,208.31
4-5000 Be ,559.94 ,926.14 ,260.71
4-6000 Tu ,471.97 ,042.04 ,150.06
4-8900 Re ,500.00 [=18=].00 [=18=].00
Total Income 1,125.47 1,211.60 0,157.85
5-0000 Cost of Sales
Gross Profit 1,125.47 1,211.60 0,157.85
6-0000 Expenses
6-1000 General & Administrative Exp
6-1050 Accounting Fees [=18=].00 [=18=].00 0.00
6-1200 Bank Charges .20 .20 .99
i can pick up the trader and FYear from that excel sheet by using OLE DB Source but i don't actually know how to insert that data to each column of that table like above
使用您现有的方法在开始时使用交易者和 FYYear 填充两个 SSIS 变量。然后随后在您的数据流中使用派生列转换并将变量值作为附加列插入。
根据您发送的图片:
删除除 第一个 ForEachLoop 容器及其内容之外的所有内容
在此 ForEachLoop 容器中添加一个运行 select * from [Sheet1$a1:a1]
的执行 SQL 任务。这应该得到财政年度(如果它在该单元格中)并且您应该能够将该结果加载到单个字符串变量中(您需要事先创建)。您需要将其设置为 ResultSet=SingleRow 并且您需要映射结果集区域。不需要使用参数映射区
在此处查看有关如何从单行结果加载变量的更多信息:https://www.simple-talk.com/sql/ssis/ssis-basics-using-the-execute-sql-task-to-generate-result-sets/
- 现在,在您现有的 Excel 数据源数据流中,添加派生列转换并将这些字符串变量作为额外列包含在内,这些列将插入到 table
我已经使用 SSIS 从 Excel 文件中将一些数据导入到我的 SQL 服务器 table 中。因为它是一份损益表报告,所以它有一个 header 命名为交易名称、地址会计年度等。
在 SSIS 中,我使用了 OLE DB 源并使用了类似
的查询Select * from [Sheet1$A10:E]
所以数据已经被提取了。但是您需要插入交易名称和会计年度信息以及其他数据,例如
Trader FYear AccNo AccName July August September
a 2014 4-0000 In
a 2014 4-0500 Ad ,514.06 ,521.23 ,296.62
a 2014 4-1000 Me ,085.78 ,676.20 ,150.87
a 2014 4-1300 Ro ,876.20 ,956.70 ,819.04
a 2014 4-2000 Gr ,540.76 ,978.63 ,272.24
我可以使用 OLE DB 源从 Excel sheet 中获取交易者和 FYear,SQL 是
select * from [Sheet1$a1:a8]
并使用条件拆分我可以将它们分开。但我实际上并不知道如何将该数据插入到 table 的每一列,就像上面那样。
还有一件事,如果我将查询写成
insert into tblA(Trader, FYear, AccNo, AccName, July, August, September)
select
'a', '2014', tblB.AccNo, tblB.AccName,
tblB.July, tblB.August, tblB.September;
然后,它可以在 SQL 服务器 table 中工作,但是谁能帮我插入这两列数据,就像上面 table 一样?无论如何谢谢
![在此处输入图片描述][1]
Trading Name(a)
Address1
Address2
Profit & Loss Statement
Fiscal Year(2014)
AccNo AccName July August September
4-0000 In
4-0500 Ad ,514.06 ,521.23 ,296.62
4-1000 Me ,085.78 ,676.20 ,150.87
4-1300 Ro ,876.20 ,956.70 ,819.04
4-2000 Gr ,540.76 ,978.63 ,272.24
4-3500 B [=18=].00 [=18=].00 [=18=].00
4-4000 P ,576.76 ,110.66 ,208.31
4-5000 Be ,559.94 ,926.14 ,260.71
4-6000 Tu ,471.97 ,042.04 ,150.06
4-8900 Re ,500.00 [=18=].00 [=18=].00
Total Income 1,125.47 1,211.60 0,157.85
5-0000 Cost of Sales
Gross Profit 1,125.47 1,211.60 0,157.85
6-0000 Expenses
6-1000 General & Administrative Exp
6-1050 Accounting Fees [=18=].00 [=18=].00 0.00
6-1200 Bank Charges .20 .20 .99
i can pick up the trader and FYear from that excel sheet by using OLE DB Source but i don't actually know how to insert that data to each column of that table like above
使用您现有的方法在开始时使用交易者和 FYYear 填充两个 SSIS 变量。然后随后在您的数据流中使用派生列转换并将变量值作为附加列插入。
根据您发送的图片:
删除除 第一个 ForEachLoop 容器及其内容之外的所有内容
在此 ForEachLoop 容器中添加一个运行
select * from [Sheet1$a1:a1]
的执行 SQL 任务。这应该得到财政年度(如果它在该单元格中)并且您应该能够将该结果加载到单个字符串变量中(您需要事先创建)。您需要将其设置为 ResultSet=SingleRow 并且您需要映射结果集区域。不需要使用参数映射区
在此处查看有关如何从单行结果加载变量的更多信息:https://www.simple-talk.com/sql/ssis/ssis-basics-using-the-execute-sql-task-to-generate-result-sets/
- 现在,在您现有的 Excel 数据源数据流中,添加派生列转换并将这些字符串变量作为额外列包含在内,这些列将插入到 table