【问题标题】:Script task inside a SSIS For Each loop - writing to a fileSSIS For Each 循环中的脚本任务 - 写入文件
【发布时间】:2013-10-28 19:42:51
【问题描述】:

我的脚本任务在每个循环的 SSIS 内。我希望脚本任务仅针对所有迭代将一些动态字符串写入一个文件。每次迭代后,文件应该被追加,而不是被动态字符串的当前值覆盖。它就像一个日志记录“工具”。顺便说一句,SSIS 是 SQL 服务器集成服务,一个 ETL 工具。

我该怎么做?

我尝试使用脚本,但它似乎正在用动态字符串覆盖文件。我不想要那个。我希望它改为附加到文件中。

这是我的每个循环里面的脚本 -

String text = "My text here";
String path = @"C:\Data\TextFiles\logFile.txt";
StreamWriter file = new StreamWriter(path, true);
file.WriteLine(text);
file.Close();

【问题讨论】:

  • @gunr2171 - 好的,谢谢。我现在就试试。这里有一个例子 - dotnetperls.com/file-appendalltext
  • @Jonesy - 你是否在给定条件下在 SSIS 中运行代码?

标签: c# sql-server sql-server-2008 ssis


【解决方案1】:

似乎更简单的方法是使用File.AppendAllText(),或System.IO.File 中的其他变体之一。

string text = "My text here";
string path = @"C:\Data\TextFiles\logFile.txt";

System.IO.File.AppendAllText(path, text);

来自MSDN

打开一个文件,将指定的字符串附加到文件中,然后关闭文件。如果文件不存在,此方法创建一个文件,将指定的字符串写入文件,然后关闭文件。

【讨论】:

  • 好的,我会尽快尝试。但是,提醒您一下,此脚本在 SSIS 的每个循环中运行。
  • @blasto,对于一个普通的 c# 程序,这将工作得很好。不知道SSIS会不会影响这个。
  • 不管脚本从哪里运行,.NET 就是 .NET
  • 我是否需要执行任何关键的关闭操作,例如 file.Close();在你的例子中?
  • @blasto,至于问题Do I need to do any critical closing operations:没有。该函数返回一个 void,因此您无法再做任何事情。阅读说明,它将为您关闭文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-09-27
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 2015-11-12
  • 1970-01-01
相关资源
最近更新 更多