예제 #1
0
        static void Main(string[] args)
        {
            // Creating the package and data flow task:
            EzPackage package = new EzPackage();
            EzDataFlow dataFlow = new EzDataFlow(package);

            // Creating the first source:
            EzSqlOleDbCM srcConn1 = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source1 = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;
            source1.Connection = srcConn1;
            srcConn1.SetConnectionString("localhost", "Northwind");
            source1.Table = "Customers";

            // Creating the second source, which has the same columns as the first source:
            EzSqlOleDbCM srcConn2 = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source2 = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;
            source2.Connection = srcConn2;
            srcConn2.SetConnectionString("localhost", "Northwind");
            source2.Table = "Customers3";

            // Creating the third source, which contains different columns to demonstrate how EzUnionAll handles this scenario:
            EzSqlOleDbCM srcConn3 = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source3 = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;
            source3.Connection = srcConn3;
            srcConn3.SetConnectionString("localhost", "Northwind");
            source3.Table = "FuzzyOrders";

            /* Creating EzUnionAll and attaching it to the sources.
             * 
             * The input columns of the first input attached define the output columns.
             * 
             * The second input has the same output columns as the first input, so the input columns
             * of the second input are mapped to the corresponding output columns.
             * 
             * The third input shares two of the first input's columns, so these columns are automatically mapped together.
             * The rest of the third input's columns do not match any of the existing output columns, so they are not mapped.
             * No value is inserted into the unmapped output columns for rows that originate from the third input.
             */
            EzUnionAll union = new EzUnionAll(dataFlow);
            union.AttachTo(source1, 0, 0);
            union.AttachTo(source2, 0, 1);
            union.AttachTo(source3, 0, 2);

            // Creating a Flat File Destination:
            EzFlatFileCM output_conn = Activator.CreateInstance(typeof(EzFlatFileCM), new object[] { package }) as EzFlatFileCM;
            EzFlatFileDestination output = Activator.CreateInstance(typeof(EzFlatFileDestination), new object[] { dataFlow }) as EzFlatFileDestination;
            output.Connection = output_conn;
            output_conn.ConnectionString = @"C:\Union All\UnionAllSample.txt";
            output.Overwrite = true;

            // Attaching the Union All component to the destination:
            output.AttachTo(union, 0, 0);
            output.DefineColumnsInCM();

            // Executing the package:
            package.Execute();
        }
 public EzForLoopDFPackage()
     : base()
 {
     DataFlow = new EzDataFlow(ForLoop);
 }
 public EzDataFlowPackage() : base()
 {
     DataFlow = new EzDataFlow(this);
 }
 public EzRowCount(EzDataFlow dataFlow)
     : base(dataFlow)
 {
 }
예제 #5
0
        static void Main(string[] args)
        {
            // Creating the package and the Data Flow Task:
            EzPackage  package  = new EzPackage();
            EzDataFlow dataFlow = new EzDataFlow(package);

            // Creating a connection to the database:
            EzSqlOleDbCM  srcConn = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source  = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;

            source.Connection = srcConn;
            srcConn.SetConnectionString("localhost", "Northwind");
            source.Table = "FuzzyOrders";

            // Creating six Flat File Destinations to write the output from the Conditional Split:
            uint numberCases = 6;
            List <EzFlatFileDestination> destinations = new List <EzFlatFileDestination>();

            for (int i = 1; i <= numberCases; i++)
            {
                EzFlatFileCM          conn = Activator.CreateInstance(typeof(EzFlatFileCM), new object[] { package }) as EzFlatFileCM;
                EzFlatFileDestination dest = Activator.CreateInstance(typeof(EzFlatFileDestination), new object[] { dataFlow }) as EzFlatFileDestination;
                dest.Connection       = conn;
                conn.ConnectionString = @"C:\CondSplit\output" + i + ".txt";
                dest.Overwrite        = true;

                destinations.Add(dest);
            }

            // Attaching the Conditional Split to the source, and mapping input columns to output columns:
            EzConditionalSplit split = new EzConditionalSplit(dataFlow);

            split.AttachTo(source);
            split.LinkAllInputsToOutputs();

            /*
             * Important step - this is where the new EzConditionalSplit functionality comes in.
             *
             * The Condition property of EzConditionalSplit indexes over outputs using output names.
             * Providing an output name that does not yet exist will create a new output.
             *
             * The Condition property is set to a string that represents the condition that is evaluated to determine which
             * output a particular row is sent to.
             *
             * The set method of the Condition property also assigns a string to the Expression property, which contains the actual string
             * that is evaulated during runtime.  In this string, column names are replaced with column IDs.  The Expression property
             * can be set directly, but the Condition property allows the user to provide a string containing column names without
             * worrying about IDs.  In addition, the Condition set method also assigns the new expression to be the next case to be evaluated,
             * automatically setting the Order property, which must be sequential in order to guarantee execution.
             */
            for (int i = 1; i <= numberCases; i++)
            {
                split.Condition["case" + i] = "EmployeeID == " + i;
            }

            // Attaching each destination to an output of Conditional Split:
            for (int i = 1; i <= numberCases; i++)
            {
                destinations[i - 1].AttachTo(split, i + 1, 0);
                destinations[i - 1].DefineColumnsInCM();
            }

            // Creating a destination for the default output:
            EzFlatFileCM          conn_default = Activator.CreateInstance(typeof(EzFlatFileCM), new object[] { package }) as EzFlatFileCM;
            EzFlatFileDestination dest_default = Activator.CreateInstance(typeof(EzFlatFileDestination), new object[] { dataFlow }) as EzFlatFileDestination;

            dest_default.Connection       = conn_default;
            conn_default.ConnectionString = @"C:\CondSplit\default.txt";
            dest_default.Overwrite        = true;

            // Attaching the default destination to the default output.
            dest_default.AttachTo(split, 0, 0);
            dest_default.DefineColumnsInCM();

            // Execute the package.
            package.Execute();
        }
 public EzRowNumber(EzDataFlow dataFlow)
     : base(dataFlow)
 {
 }
예제 #7
0
        /// <summary>
        /// 创建 数据流任务
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="task"></param>
        /// <param name="PreviousComponent"></param>
        /// <returns></returns>
        private EzDataFlow createEzDataFlow(EzContainer parent, Task task, EzExecutable PreviousComponent, Variables Variables)
        {
            //Adding a data flow task
            EzDataFlow dataflow = new EzDataFlow(parent);

            if (PreviousComponent != null)
            {
                dataflow.AttachTo(PreviousComponent);
            }
            dataflow.Name = task.TaskName + "_" + task.TaskId;
            EzOleDbSource source = new EzOleDbSource(dataflow)
            {
                Name = task.TaskName,
                //source.SqlCommand =string.Format("exec [dbo].[{0}] ",task.SourceTableName);
                SqlCommand = task.SourceTableName,


                Connection = ezOleDbConnectionManagers[task.SourceConmgrId],
                //source.Table = task.SourceTableName;
                AccessMode = AccessMode.AM_SQLCOMMAND
            };

            string start_guid = "";
            string end_guid   = "";

            foreach (Variable x in Variables)
            {
                if (x.Namespace == "User")
                {
                    if (x.Name == "StartTime" || x.Name == "EndTime")
                    {
                        if (x.Name == "StartTime")
                        {
                            start_guid = x.ID;
                            if (end_guid != "")
                            {
                                break;
                            }
                        }
                        else
                        {
                            end_guid = x.ID;
                            if (start_guid != "")
                            {
                                break;
                            }
                        }
                    }
                }
            }
            source.SetComponentProperty("ParameterMapping", "\"@StartTime:Input\"," + start_guid + ";\"@EndTime:Input\"," + end_guid + ";");
            //Adding an OLE DB Destination
            EzOleDbDestination destination = new EzOleDbDestination(dataflow)
            {
                Name       = task.TargetTableName,
                Connection = ezOleDbConnectionManagers[task.TargetConmgrId],
                AccessMode = AccessMode.AM_OPENROWSET_FASTLOAD,
                Table      = task.TargetTableName
            };

            //Linking source and destination
            destination.AttachTo(source);
            destination.LinkAllInputsToOutputs();
            return(dataflow);
        }
예제 #8
0
        static void Main(string[] args)
        {
            // Creating the package and the Data Flow Task:
            EzPackage package = new EzPackage();
            EzDataFlow dataFlow = new EzDataFlow(package);

            // Creating a connection to the database:
            EzSqlOleDbCM srcConn = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;
            source.Connection = srcConn;
            srcConn.SetConnectionString("localhost", "Northwind");
            source.Table = "FuzzyOrders";

            // Creating six Flat File Destinations to write the output from the Conditional Split:
            uint numberCases = 6;
            List<EzFlatFileDestination> destinations = new List<EzFlatFileDestination>();
            for (int i = 1; i <= numberCases; i++)
            {
                EzFlatFileCM conn = Activator.CreateInstance(typeof(EzFlatFileCM), new object[] { package }) as EzFlatFileCM;
                EzFlatFileDestination dest = Activator.CreateInstance(typeof(EzFlatFileDestination), new object[] { dataFlow }) as EzFlatFileDestination;
                dest.Connection = conn;
                conn.ConnectionString = @"C:\CondSplit\output" + i + ".txt";
                dest.Overwrite = true;

                destinations.Add(dest);
            }

            // Attaching the Conditional Split to the source, and mapping input columns to output columns:
            EzConditionalSplit split = new EzConditionalSplit(dataFlow);
            split.AttachTo(source);
            split.LinkAllInputsToOutputs();

            /*
             * Important step - this is where the new EzConditionalSplit functionality comes in.
             * 
             * The Condition property of EzConditionalSplit indexes over outputs using output names.
             * Providing an output name that does not yet exist will create a new output.
             * 
             * The Condition property is set to a string that represents the condition that is evaluated to determine which
             * output a particular row is sent to.
             * 
             * The set method of the Condition property also assigns a string to the Expression property, which contains the actual string
             * that is evaulated during runtime.  In this string, column names are replaced with column IDs.  The Expression property
             * can be set directly, but the Condition property allows the user to provide a string containing column names without
             * worrying about IDs.  In addition, the Condition set method also assigns the new expression to be the next case to be evaluated,
             * automatically setting the Order property, which must be sequential in order to guarantee execution.
             */
            for (int i = 1; i <= numberCases; i++)
            {
                split.Condition["case" + i] = "EmployeeID == " + i;
            }

            // Attaching each destination to an output of Conditional Split:
            for (int i = 1; i <= numberCases; i++)
            {
                destinations[i - 1].AttachTo(split, i + 1, 0);
                destinations[i - 1].DefineColumnsInCM();
            }

            // Creating a destination for the default output:
            EzFlatFileCM conn_default = Activator.CreateInstance(typeof(EzFlatFileCM), new object[] { package }) as EzFlatFileCM;
            EzFlatFileDestination dest_default = Activator.CreateInstance(typeof(EzFlatFileDestination), new object[] { dataFlow }) as EzFlatFileDestination;
            dest_default.Connection = conn_default;
            conn_default.ConnectionString = @"C:\CondSplit\default.txt";
            dest_default.Overwrite = true;

            // Attaching the default destination to the default output.
            dest_default.AttachTo(split, 0, 0);
            dest_default.DefineColumnsInCM();

            // Execute the package.
            package.Execute();
        }
 public EzChecksum(EzDataFlow dataFlow)
     : base(dataFlow)
 {
 }
예제 #10
0
        static void Main(string[] args)
        {
            // Creating the package and data flow task:
            EzPackage  package  = new EzPackage();
            EzDataFlow dataFlow = new EzDataFlow(package);

            // Creating the first source:
            EzSqlOleDbCM  srcConn1 = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source1  = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;

            source1.Connection = srcConn1;
            srcConn1.SetConnectionString("localhost", "Northwind");
            source1.Table = "Customers";

            // Creating the second source, which has the same columns as the first source:
            EzSqlOleDbCM  srcConn2 = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source2  = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;

            source2.Connection = srcConn2;
            srcConn2.SetConnectionString("localhost", "Northwind");
            source2.Table = "Customers3";

            // Creating the third source, which contains different columns to demonstrate how EzUnionAll handles this scenario:
            EzSqlOleDbCM  srcConn3 = Activator.CreateInstance(typeof(EzSqlOleDbCM), new object[] { package }) as EzSqlOleDbCM;
            EzOleDbSource source3  = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;

            source3.Connection = srcConn3;
            srcConn3.SetConnectionString("localhost", "Northwind");
            source3.Table = "FuzzyOrders";

            /* Creating EzUnionAll and attaching it to the sources.
             *
             * The input columns of the first input attached define the output columns.
             *
             * The second input has the same output columns as the first input, so the input columns
             * of the second input are mapped to the corresponding output columns.
             *
             * The third input shares two of the first input's columns, so these columns are automatically mapped together.
             * The rest of the third input's columns do not match any of the existing output columns, so they are not mapped.
             * No value is inserted into the unmapped output columns for rows that originate from the third input.
             */
            EzUnionAll union = new EzUnionAll(dataFlow);

            union.AttachTo(source1, 0, 0);
            union.AttachTo(source2, 0, 1);
            union.AttachTo(source3, 0, 2);

            // Creating a Flat File Destination:
            EzFlatFileCM          output_conn = Activator.CreateInstance(typeof(EzFlatFileCM), new object[] { package }) as EzFlatFileCM;
            EzFlatFileDestination output      = Activator.CreateInstance(typeof(EzFlatFileDestination), new object[] { dataFlow }) as EzFlatFileDestination;

            output.Connection            = output_conn;
            output_conn.ConnectionString = @"C:\Union All\UnionAllSample.txt";
            output.Overwrite             = true;

            // Attaching the Union All component to the destination:
            output.AttachTo(union, 0, 0);
            output.DefineColumnsInCM();

            // Executing the package:
            package.Execute();
        }