c#直接调用ssis包实现Sql Server的数据导入功能

news/2024/7/5 3:24:33

调用ssis包实现Sql Server的数据导入功能网上已经有很多人讨论过,自己参考后也动手实现了一下,上一次笔者的项目中还用了一下这个功能。思前想后,决定还是贴一下增强记忆,高手请54.
1、直接调用ssis包,需要引用Microsoft.SqlServer.DTSRuntimeWrap.dll,客户端需要安装MS SQL Server2005的客户端组件。
2、调用代码

ExpandedBlockStart.gif代码
        /// <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, truenull); //另外还有一种方法叫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;

        }

 需要的配置节如下:

ExpandedBlockStart.gif代码
<?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>

 注意:方法中需要用到dtsx模板和csv文件,csv文件的简单生成可以参考这一篇,而dtsx模板制作是重中之中,自己菜鸟一枚,没有发言权,您可以参考网上资源。
最后,弱弱地问一下,这个算不算传说中的抄袭剽窃啊?非原创,非原创......默念一百遍,

转载于:https://www.cnblogs.com/jeffwongishandsome/archive/2009/12/17/1543052.html


http://lihuaxi.xjx100.cn/news/282048.html

相关文章

Linux技术的成功之处

相信很多人在接触linux之前&#xff0c;都应该接触过windows系统&#xff0c;毕竟这个系统在中国而言&#xff0c;几乎是所有同学从小就接触到的一个系统&#xff0c;每当我们打开新买的电脑的时候&#xff0c;总会弹出熟悉的Windows界面。而今天在这里要说的是一个几乎能和win…

百度与华为重磅合作!李彦宏:技术是百度的信仰

导语&#xff1a;这是百度第三年举办AI开发者大会。一生二&#xff0c;二生三&#xff0c;三生万物。AI虽然不能产生万物&#xff0c;但是正在“唤醒万物”。 作者 | 阿司匹林 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 在今天上午举行的的百度AI开发者大…

如何在 Python 中创建一个简单的神经网络

点击上方“小白学视觉”&#xff0c;选择加"星标"或“置顶”重磅干货&#xff0c;第一时间送达引言在过去的几十年里&#xff0c;机器学习对世界产生了巨大的影响&#xff0c;而且它的普及程度似乎在不断增长。最近&#xff0c;越来越多的人已经熟悉了机器学习的子领…

B站500万粉up主党妹被黑客勒索:交钱赎“人”!顶级安全专家:无解

郭一璞 十三 发自 凹非寺量子位 报道 | 公众号 QbitAI最近真是太难了&#xff0c;要防新冠病毒&#xff0c;还要防勒索病毒。昨天&#xff0c;B站556万粉丝的up主「机智的党妹」就发视频说&#xff0c;自己被勒索病毒攻击了。她正在制作的数百个GB的视频素材文件&#xff0c;全…

浅谈Android系统开发中LOG的使用【转】

本文转载自&#xff1a;http://blog.csdn.net/luoshengyang/article/details/6581828 在程序开发过程中&#xff0c;LOG是广泛使用的用来记录程序执行过程的机制&#xff0c;它既可以用于程序调试&#xff0c;也可以用于产品运营中的事件记录。在Android系统中&#xff0c;提供…

php网站怎么伪静态,php怎么实现网页伪静态

php实现网页伪静态的方法&#xff1a;首先在服务器根目录创建一个“.htaccess”文件&#xff1b;然后添加内容为“RewriteRule ^index-(\d)\.html$ index.php?id$1”即可。本文操作环境&#xff1a;Windows7系统、PHP7.1版&#xff0c;DELL G3电脑.htaccess实现php网站伪静态&…

Linux 使用者身份與群組記錄的檔案

在我們Linux系統當中&#xff0c;預設的情況下&#xff0c;所有的系統上的帳號與一般身份使用者&#xff0c;還有那個root的相關資訊&#xff0c; 都是記錄在/etc/passwd這個檔案內的。至於個人的密碼則是記錄在/etc/shadow這個檔案下。 此外&#xff0c;Linux所有的群組名稱都…

简单介绍Lua中三种循环语句的使用

今天小编就为大家分享一篇关于Lua中三种循环语句的使用讲解&#xff0c;小编觉得内容挺不错的&#xff0c;现在分享给大家&#xff0c;具有很好的参考价值&#xff0c;需要的朋友一起跟随小编来看看吧 Lua的循环和C语言的循环的语法其实差不多&#xff0c;所以&#xff0c;理解…