将文件名保存到sql数据库并同时运行ssis包

时间:2013-03-28 01:50:14

标签: c# asp.net sql ssis sql-server-2008-r2

场景:我正在开发一个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)

因此,当我执行包时,如何同时将文件名保存到表中?

1 个答案:

答案 0 :(得分:0)

  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();