具有变量源的数据流任务

本文关键字:数据流 任务 变量 | 更新日期: 2023-09-27 17:57:07

在 SSIS 包中,我需要将 2 个 SQL 查询的内容放在 Excel 文件的 2 张工作表中。2 个查询的结果在 2 个对象变量中,我想知道我是否可以为此使用数据流任务。问题:

  1. 我不知道我将拥有哪些列(列数,列名称),查询是在执行时创建的 Set @qry = 'Select ...' EXEC(@qry)
  2. 我对 Excel 文件
  3. 有同样的问题,我无法拥有精确的模板,我对 Excel 文件所知道的只是我们将有 2 张纸。这可能吗?如果没有,是否有其他方法(脚本任务,SSRS...)?

具有变量源的数据流任务

作为一般答案,不,你不能使用 SSIS 执行此操作。但是,由于您使用 C# 标记了此内容,因此可以使用 OLE 将工作表添加到 Excel 文件并向这些工作表添加数据,http://jayadevjyothi.blogspot.com/2013/01/step-1-create-new-project.html .这可以在 SSIS 外部完成,或者如果解决方案需要在 SSIS 中运行,则可以将 C# 放在脚本任务中。

           // Excel file path
        string excelFilePath = @"F:'Excel File.xlsx";
        // Connection string for accessing excel file
        string connectionString = string.Format(@"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Extended Properties=""Excel 12.0 Xml;HDR=YES""", excelFilePath);
        using (OleDbConnection Connection = new OleDbConnection(connectionString))
        {
            try
            {
                Connection.Open();
                using (OleDbCommand Command = new OleDbCommand())
                {
                    Command.Connection = Connection;
                    Command.CommandText = "CREATE TABLE [Students] ([First Name] Char(200), [Last Name] Char(200), [Age] Char(2))";
                    Command.ExecuteNonQuery();
                    Console.WriteLine("Table Created Successfully");
                }
                Console.ReadLine();
            }
            catch (OleDbException ex)
            {
                Console.WriteLine("Message: " + ex.Message);
                Console.ReadLine();
            }
            finally
            {
                Connection.Close();
            }
        }