Quantcast
Channel: SQL Server Integration Services forum
Viewing all articles
Browse latest Browse all 24688

SSIS Dynamically + Export excel + Column not mapping

$
0
0

Hi ,

I Have SSIs which doing export from SQL DB to Excel , i am using Data Conversion for cast data, everything seems work, but when i case data from , my Destination Data not mapping becuase , column name looks chnage by using prefix.

how i can fix code below

very helpful this code.

Microsoft.SqlServer.Dts.Runtime.Application SIFISO_app = new Microsoft.SqlServer.Dts.Runtime.Application();


                //Adding Connection Manger
                Package package = new Package();
                ConnectionManager ConMgr = package.Connections.Add("OLEDB");
                ConMgr.ConnectionString = ""
                ConMgr.Name = "SourceConnectionOLEDB";
                ConMgr.Description = "OLE DB connection to the AdventureWorks2008R2 database.";

               
                Executable e1 = package.Executables.Add("STOCK:PipelineTask");
                TaskHost thMainPipe = e1 as TaskHost;
                thMainPipe.Name = "Data Flow Task 1";
                //thMainPipe.Properties["Connection"].SetValue(thMainPipe, "SourceConnectionOLEDB");
                MainPipe dataFlowTask = thMainPipe.InnerObject as MainPipe;

               // string Conn = "Data Source=S4UAGP-PC\\ASHOKINSTANCE;Initial Catalog=MMBD;Integrated Security=True";
                // Create the source component.  


                ///Adding Source
                ///
                IDTSComponentMetaData100 srcComponent =   dataFlowTask.ComponentMetaDataCollection.New();
                srcComponent.ComponentClassID = "DTSAdapter.OleDbSource";
                CManagedComponentWrapper srcDesignTime = srcComponent.Instantiate();
                srcComponent.Name = "Source - MMBD_LN_MSTR1";
                //srcComponent.Description = "OLE DB Source";
                IDTSDesigntimeComponent100 srcDesignTimeComponent = srcComponent.Instantiate();
                srcDesignTimeComponent.ProvideComponentProperties();

                // Configuring  it to read from the given table
                //srcDesignTimeComponent.SetComponentProperty("AccessMode", 2);
                //srcDesignTimeComponent.SetComponentProperty("SqlCommand", "SELECT  * FROM   [MMBD_LN_MSTR]");

                srcDesignTimeComponent.SetComponentProperty("AccessMode", 0);
                srcDesignTimeComponent.SetComponentProperty("OpenRowset", "[dbo].[MMBD_LN_MSTR1]");

                // Setting the connection manager
                srcComponent.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.GetExtendedInterface(ConMgr);
                srcComponent.RuntimeConnectionCollection[0].ConnectionManagerID = ConMgr.ID;
                srcDesignTime.AcquireConnections(null);
                srcDesignTime.ReinitializeMetaData();





                ////Adding Data Conversion

                IDTSComponentMetaData100 dataConvertComponent = dataFlowTask.ComponentMetaDataCollection.New();
                dataConvertComponent.ComponentClassID = "DTSTransform.DataConvert";
                dataConvertComponent.Name = "Data Convert";
                dataConvertComponent.Description = "Data Conversion Component";

                CManagedComponentWrapper conversionInstance = dataConvertComponent.Instantiate();
                conversionInstance.ProvideComponentProperties();

                conversionInstance.AcquireConnections(null);
                conversionInstance.ReinitializeMetaData();

                // Connect the source and the transform
                dataFlowTask.PathCollection.New().AttachPathAndPropagateNotifications(srcComponent.OutputCollection[0], dataConvertComponent.InputCollection[0]);

                IDTSOutput100 output = dataConvertComponent.OutputCollection[0];
                IDTSVirtualInput100 virtualInput = dataConvertComponent.InputCollection[0].GetVirtualInput();

                int inputId = dataConvertComponent.InputCollection[0].ID;
                
                foreach (IDTSVirtualInputColumn100 vColumn in virtualInput.VirtualInputColumnCollection)
                {
                    string test = vColumn.DataType.ToString();
                    //if (vColumn.Name == "REC_CRE_DT") MessageBox.Show("ff");
                    Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType dtype = new Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType();
                    dtype = getSSISDataTypes(vColumn.DataType);
                    if (dtype != Microsoft.SqlServer.Dts.Runtime.Wrapper.DataType.DT_STR)
                    {
                        IDTSInputColumn100 inputColumn = conversionInstance.SetUsageType(inputId, virtualInput, vColumn.LineageID, DTSUsageType.UT_READONLY);
                        IDTSOutputColumn100 outputColumn = conversionInstance.InsertOutputColumnAt(output.ID, 0, vColumn.Name, string.Empty);
                        conversionInstance.SetOutputColumnDataTypeProperties(output.ID, outputColumn.ID, dtype, 1000, 0, 0, 0);
                        outputColumn.CustomPropertyCollection[0].Value = inputColumn.LineageID;
                    }
                    else
                    {
                        IDTSInputColumn100 inputcolumn = conversionInstance.SetUsageType(inputId, virtualInput, vColumn.LineageID, DTSUsageType.UT_READONLY);
                        IDTSOutputColumn100 outputColumn = conversionInstance.InsertOutputColumnAt(output.ID, 0, vColumn.Name, string.Empty);
                        conversionInstance.SetOutputColumnDataTypeProperties(output.ID, outputColumn.ID, dtype, 20, 0, 0, 1252);
                        outputColumn.CustomPropertyCollection[0].Value = inputcolumn.LineageID;
                    }
                }

                conversionInstance.ReleaseConnections();
               

                ////Adding Destination
                ConnectionManager SconMgr = package.Connections.Add("EXCEL");
                SconMgr.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\tesing.xls;Extended Properties=""Excel 8.0;HDR=Yes""";
                SconMgr.Name = "ExcelConnection";


                IDTSComponentMetaData100 destComponent = dataFlowTask.ComponentMetaDataCollection.New();
                destComponent.ComponentClassID = "DTSAdapter.ExcelDestination";
                CManagedComponentWrapper srcDesignTime1 = destComponent.Instantiate();
                destComponent.Name = "Source - MMBD_LN_MSTR1";
                //destComponent.Description = "OLE DB Source";
                IDTSDesigntimeComponent100 srcDesignTimeComponentdest = destComponent.Instantiate();
                srcDesignTimeComponentdest.ProvideComponentProperties();

                srcDesignTimeComponentdest.SetComponentProperty("AccessMode", 0);
                srcDesignTimeComponentdest.SetComponentProperty("OpenRowset", "Excel Destination");

                destComponent.RuntimeConnectionCollection[0].ConnectionManager = DtsConvert.GetExtendedInterface(SconMgr);
                destComponent.RuntimeConnectionCollection[0].ConnectionManagerID = SconMgr.ID;

                //dataFlowTask.PathCollection.New().AttachPathAndPropagateNotifications(dataConvertComponent.OutputCollection[0], destComponent.InputCollection[0]);
                dataFlowTask.PathCollection.New().AttachPathAndPropagateNotifications(dataConvertComponent.OutputCollection[0], destComponent.InputCollection[0]);

                ////Mapping

                // Get the destination's default input and virtual input.
                IDTSOutput100 outputdest = destComponent.OutputCollection[0];
                IDTSVirtualInput100 virtualInputdest = destComponent.InputCollection[0].GetVirtualInput();
                IDTSInput100 inputdest = destComponent.InputCollection[0];


                
                string dd = destComponent.InputCollection[0].InputColumnCollection.ToString();
               
                //foreach (IDTSVirtualInputColumn100 vColumn in virtualInputdest.VirtualInputColumnCollection)
                //{
                //    srcDesignTimeComponentdest.MapInputColumn(inputdest.ID, virtualInputdest.ID, outputdest.ExternalMetadataColumnCollection[vColumn.Name].ID);
                //}
              


             

                SIFISO_app.SaveToXml("D:\\C Drive\\Desktop\\DataExportWizard_Source\\SSIS\\SSIS\\pkg_Execute_Sql_Tasks.dtsx", package, null);

               
                DTSExecResult pkgResults = package.Execute();

                if (pkgResults == DTSExecResult.Success)
                    Console.WriteLine("Package ran successfully");
                else
                    Console.WriteLine("Package failed");


Jumpingboy



Viewing all articles
Browse latest Browse all 24688

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>