将文件名保存到sql数据库中,同时运行ssis包
本文关键字:运行 ssis 保存 文件名 sql 数据库 | 更新日期: 2023-09-27 18:06:18
场景:我正在开发一个web应用程序,允许用户将Excel文件上传到SQL Server 2008 R2数据库中各自的表中。当用户单击上传按钮时,我还运行使用SSIS开发的ETL进程。
我的开发环境:Asp.net, IIS7, c#, SQL Server 2008 R2
我目前面临的问题是将文件的文件名保存到表中的另一列中,因为我还将为用户创建gridview函数,以查看已经上载到数据库中的文件,并使用户能够下载错误文件。
问题:在ETL过程中运行SSIS包时,是否有任何方法可以将文件名保存到相同的表中?
下面是我的代码示例:
string filePath1 = Server.MapPath(System.IO.Path.GetFileName(file.FileName.ToString()));
file.SaveAs(filePath1);
package = app.LoadPackage(packageString, null);
package.Connections["Excel Connection Manager"].ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath1 + ";Extended Properties=Excel 12.0;HDR=YES;IMEX=1";
Microsoft.SqlServer.Dts.Runtime.DTSExecResult results = package.Execute();
这个方法允许我检索fileName:
String.Format("File : {0} uploaded.", file.FileName)
那么当我执行包时,如何同时将文件名保存到表中呢?
string connectionString = DAO.GetConnectionString();
SqlConnection sqlConn = new SqlConnection(connectionString);
sqlConn.Open()
strQuery = "update uploadSummaryDB set fileName = @fileName where id in (select max(id) from uploadSummaryDB)";
SqlCommand command = new SqlCommand(strQuery,sqlConn);
command.Parameters.Add("@fileName", SqlDbType.NVarChar).Value = file.FileName.ToString(); command.ExecuteNonQuery();