【问题标题】:Migrate console C# to SSIS Script Task将控制台 C# 迁移到 SSIS 脚本任务
【发布时间】:2019-01-04 20:56:45
【问题描述】:

我有一个 C# 控制台应用程序,它可以读取 Excel 数据并重新格式化/清理它。最后,应用程序将数据写入 2 个不同的 CSV 文件。这个控制台应用程序。有:

  1. Program.cs - 包含 Main 方法。
  2. Row.cs - 将每行数据拆分为单独列的属性。
  3. Lo​​cations.cs - 用于处理位置的属性(数据按地区/位置划分)。
  4. Lo​​cationsBuilder.cs - 包含发生数据清理和转换的主要逻辑。

我想将所有 C# 代码迁移到 SSIS C# 脚本任务中,但不确定如何执行此操作,因为脚本任务代码似乎只有 1 个对所有代码使用 1 个文件。

如果可能,我希望将所有代码放在 1 个脚本中,以便它在 SSIS 脚本任务中工作。

【问题讨论】:

  • 为什么要将甚至不引用数据库的工作控制台应用程序迁移到 SSIS 脚本任务中?这对我来说似乎不是一个好主意
  • @Nick.McDermaid,控制台应用程序读取 Excel 文件,应用特殊格式和解析并生成输出到 CSV 文件,然后 SSIS 使用 CSV 文件更新数据库。我将 2 个单独的进程/应用程序(C# 控制台应用程序和 SSIS 解决方案)合并为 1 个。
  • 如果这是一个数据集成过程,我建议你重构整个过程,将 Excel 文件直接导入数据库,(虽然这可能是一件困难的事情)。关于一个文件中的多个类 - 这样做没有问题。您只需要确保入口点符合 SSIS 的预期。首先,您应该将所有类粘贴到编辑器中,看看会发生什么

标签: c# sql-server ssis etl script-task


【解决方案1】:

SSIS 是用于 ETL 工作的平台。您可以将 Excel 存档为 CSV 格式。

How to do it
1. Open Integration Services project / SQL Server Data Tools (SSDT)
2. Create a new SSIS package
3. Add data flow and add those 2 files as datasource 
4. Add control flow accordingly if you have any conditional logic in console applicaiton.
5. Add output destination as CSV ouput
6. That's it

【讨论】:

  • 控制台应用程序将数据解析并重新格式化为 CSV 文件。现有 SSIS 解决方案的 ETL 部分抓取文件并将数据插入数据库。我想要做的是将两者的功能结合到 1 个 ETL 解决方案中。我遇到的问题是我能够将所有控制台应用程序代码放入脚本任务(1 个文件,默认的 ScriptMain.cs)。它构建没有错误,但是,运行时它总是失败。插入断点不起作用,因为它似乎在 SSIS 调用它时立即失败。我收到一般消息“DTS 脚本任务在用户代码中遇到异常:..”
  • ... 我怀疑 Script Task 不喜欢在 1 个文件中有多个类。我还尝试将代码留在单独的文件中(就像在原始控制台应用程序中一样),但这甚至没有构建。
【解决方案2】:

您可以保持代码原样

在 SSIS 设计器中添加一个脚本任务组件,并复制脚本内的所有类代码(您可以在一个 cs 文件中创建多个类或将新类添加到项目中)。并复制脚本中main函数里面的main方法代码。

或者您可以创建一个类库并在脚本任务代码中使用它。

有用的链接

【讨论】:

    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多