调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能。思前想后,决定还是贴一下增强记忆,高手请54.
1、直接调用ssis包,需要引用Microsoft.SqlServer.DTSRuntimeWrap.dll,客户端需要安装MS SQL Server2005的客户端组件。
2、调用代码
///
<summary>
/// /通过SSIS包 将数据导入数据库
/// </summary>
/// <param name="dtsxFileName"> dtsx文件名 </param>
/// <param name="csvFileName"> csv文件名 </param>
/// <returns></returns>
protected bool FillData2DB( string dtsxFileName, string csvFileName)
{
string dtsxFile = System.AppDomain.CurrentDomain.BaseDirectory + " DTSX\\ " + dtsxFileName;
Microsoft.SqlServer.Dts.Runtime.Wrapper.Application app = new Microsoft.SqlServer.Dts.Runtime.Wrapper.Application();
// Call the dtsx file
IDTSPackage90 package = app.LoadPackage(dtsxFile, true , null ); // 另外还有一种方法叫LoadFromSQLServer
package.Connections[ " File " ].ConnectionString = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, csvFileName);
package.Connections[ " 本地连接 " ].ConnectionString = ConfigurationSettings.AppSettings[ " ConnStr " ];
DTSExecResult result = package.Execute();
// 获取包的执行信息
// string message = string.Empty;
// if (result.Equals(DTSExecResult.DTSER_FAILURE))
// {
// for (int i = 0; i < package.Errors.Count; i++)
// {
// message += package.Errors[i].Description;
// }
// }
// if (!string.IsNullOrEmpty(message))
// {
// throw new Exception(message); // 抛出异常
// }
if (result.Equals(DTSExecResult.DTSER_SUCCESS))
return true ;
else
return false ;
}
/// /通过SSIS包 将数据导入数据库
/// </summary>
/// <param name="dtsxFileName"> dtsx文件名 </param>
/// <param name="csvFileName"> csv文件名 </param>
/// <returns></returns>
protected bool FillData2DB( string dtsxFileName, string csvFileName)
{
string dtsxFile = System.AppDomain.CurrentDomain.BaseDirectory + " DTSX\\ " + dtsxFileName;
Microsoft.SqlServer.Dts.Runtime.Wrapper.Application app = new Microsoft.SqlServer.Dts.Runtime.Wrapper.Application();
// Call the dtsx file
IDTSPackage90 package = app.LoadPackage(dtsxFile, true , null ); // 另外还有一种方法叫LoadFromSQLServer
package.Connections[ " File " ].ConnectionString = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory, csvFileName);
package.Connections[ " 本地连接 " ].ConnectionString = ConfigurationSettings.AppSettings[ " ConnStr " ];
DTSExecResult result = package.Execute();
// 获取包的执行信息
// string message = string.Empty;
// if (result.Equals(DTSExecResult.DTSER_FAILURE))
// {
// for (int i = 0; i < package.Errors.Count; i++)
// {
// message += package.Errors[i].Description;
// }
// }
// if (!string.IsNullOrEmpty(message))
// {
// throw new Exception(message); // 抛出异常
// }
if (result.Equals(DTSExecResult.DTSER_SUCCESS))
return true ;
else
return false ;
}
需要的配置节如下:
代码
注意:方法中需要用到dtsx模板和csv文件,csv文件的简单生成可以参考这一篇,而dtsx模板制作是重中之中,自己菜鸟一枚,没有发言权,您可以参考网上资源。
最后,弱弱地问一下,这个算不算传说中的抄袭剽窃啊?非原创,非原创......默念一百遍,
本文转自JeffWong博客园博客,原文链接:http://www.cnblogs.com/jeffwongishandsome/archive/2009/12/17/1543052.html,如需转载请自行联系原作者