c#直接调用ssis包实现Sql Server的数据导入功能
调用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;
}
需要的配置节如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key="ConnStr" value="Data Source=10.10.**.***;User ID=adminTest;Password=***;Initial Catalog=TestDb;Provider=SQLNCLI.1;Persist Security Info=True;"/>
</appSettings>
</configuration>
<configuration>
<appSettings>
<add key="ConnStr" value="Data Source=10.10.**.***;User ID=adminTest;Password=***;Initial Catalog=TestDb;Provider=SQLNCLI.1;Persist Security Info=True;"/>
</appSettings>
</configuration>
注意:方法中需要用到dtsx模板和csv文件,csv文件的简单生成可以参考这一篇,而dtsx模板制作是重中之中,自己菜鸟一枚,没有发言权,您可以参考网上资源。
最后,弱弱地问一下,这个算不算传说中的抄袭剽窃啊?非原创,非原创......默念一百遍,
作者:Jeff Wong
出处:http://jeffwongishandsome.cnblogs.com/
本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构