c#直接调用ssis包实现SqlServer的数据导入功能
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c#直接调⽤ssis包实现SqlServer的数据导⼊功能
调⽤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 = bine(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模板制作是重中之中,⾃⼰菜鸟⼀枚,没有发⾔权,您可以参考⽹上资源。
最后,弱弱地问⼀下,这个算不算传说中的抄袭剽窃啊?⾮原创,⾮原创......默念⼀百遍,。