Script component 简单应用

在SSIS中,可以使用C#编写脚本,这是十分激动人心的事,能够使用C#代码,使得Script Component无所不能。

第一部分:组件简介
Script Component 有三种类型:Source, Destination and Transformation

1,每种类型的脚本,都有两种类型的参数:ReadOnly 和ReadWrite,在脚本中可以使用 this.Variables.VariableName 来获取或设置参数变量的值

示例:创建四个Variable,并传递给Script component

SSIS十分友好,在脚本中自动生成了一个子类,将Variable Name作为属性添加到子类中,引用Variable Name十分简单

public class ScriptMain : UserComponent

在脚本代码中,使用 this.Variables.VariableName 来获取或设置参数变量的值

2,可以为 Script component 指定connection ,如果在脚本中使用Ado.net,可以直接创建Ado.net connection manager,在脚本中,使用以下代码来引用connection

IDTSConnectionManager100 cnManager = this.Connections.Connection;

3,Script component 不仅有输入的Variable,而且还有output / input columns,设置output / input columns 以便输出或输入表数据

示例中增加两列Code和name,分别是string类型

第二部分:Source 组件示例

4,如果Script Component 作为Source,那么使用脚本获取数据之后,可以使用将数据逐行添加到Source 的输出buff中。

在将获得的数据集插入到output buff中时,SSIS使用的代码逻辑是:先向output buff中插入一行,然后为该行的字段赋值

    DataRow dr=dt.Rows[0];

    this.Output0Buffer.AddRow();
            this.Output0Buffer.Code = dr["code"].ToString();
            this.Output0Buffer.Name = dr["name"].ToString();

示例Code

DataTable dt;

    /// <summary>
    /// This method is called once, before rows begin to be processed in the data flow.
    ///
    /// You can remove this method if you don‘t need to do anything here.
    /// </summary>
    public override void PreExecute()
    {
        base.PreExecute();

        IDTSConnectionManager100 cnManager = this.Connections.Connection;
        SqlConnection cnn = (SqlConnection)cnManager.AcquireConnection(null);

        SqlCommand cmd = cnn.CreateCommand();
        cmd.CommandText = "select code,name from [dbo].[tbExcel]";
        cmd.CommandType = CommandType.Text;
        cmd.CommandTimeout = 60000;

        dt = new DataTable("dt");
        SqlDataAdapter sda = new SqlDataAdapter(cmd);
        sda.Fill(dt);
    }

    /// <summary>
    /// This method is called after all the rows have passed through this component.
    ///
    /// You can delete this method if you don‘t need to do anything here.
    /// </summary>
    public override void PostExecute()
    {
        base.PostExecute();
        /*
         * Add your code here
         */
    }

    public override void CreateNewOutputRows()
    {
        foreach (DataRow dr in dt.Rows)
        {
            this.Output0Buffer.AddRow();
            this.Output0Buffer.Code = dr["code"].ToString();
            this.Output0Buffer.Name = dr["name"].ToString();
        }
    }
时间: 2024-12-28 20:37:01

Script component 简单应用的相关文章

微软BI 之SSIS 系列 - 使用 Script Component Destination 和 ADO.NET 解析不规则文件并插入数据

开篇介绍 这一篇文章是 微软BI 之SSIS 系列 - 带有 Header 和 Trailer 的不规则的平面文件输出处理技巧 的续篇,在上篇文章中介绍到了对于这种不规则文件输出的处理方式.比如下图中的这种不规则文件,第一行,第二行 Header 部分,第三行的内容 Content 部分,最后一行的 Trailer 部分. 在前几个课程 微软BI SSIS 2012 ETL 控件与案例精讲 第43,44,45,46 课中,我分别讲解了如何使用 .Script Component Source 解

SSIS Script Component

Why Script Component Script Component使我们具有在SSIS中使用.net自定义代码的功能,我们可以使用它达到以下的目的,或者说在ETL中有如下需要的时候我们应该考虑使用ScriptComponent: 如果我们需要对数据做多重转换(比如在两个列上分别加上值然后求平均等),我们可以使用ScriptComponent而不是在数据流中使用多个转换空间 访问一些已经存在于.net程序及中的业务规则 使用以下自定义的公式或函数,比如使用银行卡校验算法(Luhn)来验证信

Script component 用法

在SSIS中,可以使用C#编写脚本,这是十分激动人心的事,能够使用C#代码,使得Script Component无所不能. 第一部分:组件简介Script Component 有三种类型:Source, Destination and Transformation 1,每种类型的脚本,都有两种类型的参数:ReadOnly 和ReadWrite,在脚本中可以使用 this.Variables.VariableName 来获取或设置参数变量的值 示例:创建四个Variable,并传递给Script

Script Component 引用package variable

ScriptComponet 的变量分为两种类型,ReadOnly和ReadWrite,使用C#引用这两种类型的变量,有一点不同. 1,创建两个变量 2,将变量传递给script component 3,在script component中引用变量有两种方式 3.1 使用变量名作为来引用变量 int code = this.Variables.VarCode; //string name = this.Variables.VarName; //this.Variables.VarName = "

salesforce 零基础学习(六十一)apex:component简单使用以及图片轮转播放的实现

有的时候,我们项目有可能有类似需求:做一个简单的图像轮转播放功能,不同的VF页面调用可以显示不同的图片以及不同的图片描述.这种情况,如果在每个页面单独处理相关的图像轮转播放则显得代码特别冗余,此种情况下适合使用apex:component实现,将图像轮转的功能做成一个组件,图像的URL以及图像的描述信息可以作为参数传递进来,不同的VF可以放置不同的图像 URLS 和描述信息. 一.apex:component简单用法介绍: apex:component作为预定义的组件通常需要VF页面进行相关传值

使用Script Component源处理不规则平面文件

微软 BI 系列随笔 - SSIS 2012 高级应用 - Script Component处理不规则平面文件 场景介绍 在使用SSIS从平面文件导入源数据时,最常遇到的是以下两种情况: 导入规则的平面文件,这种文件的每一行数据的解析规则都是一样的 导入不规则的平面文件,这种文件可能包含多种数据结构,比如某些行是头(Head),某些行是内容(Content),某些行是尾(Tail),三种数据的解析格式都不一样 源文件的字符编码集不一样,例如文件是来自于不同的系统(或区域),这些文件的编码有可能是

OleDb Source component 简单应用

OleDb Source component 主要是从DB中获取数据,传递给下游组件,OleDb Source component的强大之处在于 query data 的mode有四种,如图 Table or View:直接传递table或view Table name or view name variable : 将一个table或view的name存放在package的一个variable中 Sql command:输入sql command,并可以使用参数,在sql command中参数

第十三章、学习 Shell Scripts 简单的 shell script 练习

简单的 shell script 练习 简单范例 对谈式脚本:变量内容由使用者决定 [[email protected] scripts]# vi sh02.sh #!/bin/bash # Program: # User inputs his first name and last name. Program shows his full name. # History: # 2005/08/23 VBird First release PATH=/bin:/sbin:/usr/bin:/us

利用script和scriptlet moniker绕过脚本白名单限制

没事儿看了一下subtee和enigma0x3今年在BSides Nashville 2017上的演讲,觉得这两个猥琐男简直不能再猥琐了 :-)其中有一个猥琐小技巧,又可以让我们好好hunting一番了.我这里先简单介绍一下吧: 在很多时候我们发现我们在目标机器环境里想要运行个js或者vbs脚本很困难,原因就是因为好多环境里使用了白名单限制机制只允许特定签名的脚本文件可以执行.在这样的环境里,我们应该怎么样去执行这些脚本呢? 首先在windows 7以上系统中,有这样一个目录:c:\window