• 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, 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;

            }

     需要的配置节如下:

    代码
    <?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模板制作是重中之中,自己菜鸟一枚,没有发言权,您可以参考网上资源。
    最后,弱弱地问一下,这个算不算传说中的抄袭剽窃啊?非原创,非原创......默念一百遍,


    作者:Jeff Wong
    出处:http://jeffwongishandsome.cnblogs.com/
    本文版权归作者和博客园共有,欢迎围观转载。转载时请您务必在文章明显位置给出原文链接,谢谢您的合作。

  • 相关阅读:
    【ThreadX】Azure RTOS ThreadX概述
    -- spi flash 擦除接口调用HAL库不同函数的区别
    STM32 芯片锁死解决方法
    【KEIL】User's Guide
    【KEIL】Software Packs
    【KEIL 】Options for File
    使用CubeMX创建TouchGFX工程时LCD死活不显示
    【转】获取本地图片的URL
    printf 函数格式控制
    【集成】touchgfx 之 《Using C code with TouchGFX》
  • 原文地址:https://www.cnblogs.com/jeffwongishandsome/p/1543052.html
Copyright © 2020-2023  润新知