C# 使用ssis编码后将.dat文件写入.txt文件

C# 使用ssis编码后将.dat文件写入.txt文件,c#,sql-server,ssis,flat-file,script-component,C#,Sql Server,Ssis,Flat File,Script Component,我有.dat文件。我需要对这个文件进行一些编码,并需要保存到一个.txt文件中,我正在SSIS中使用脚本组件 我已经使用SSIS脚本组件来执行此操作 //have declared 2 read write variable FIleLoc and FileWrite string fileIn = Variables.FileLoc; string fileOut = Variables.FileWrite; var x = System.IO.File.ReadAllText(fileIn)

我有.dat文件。我需要对这个文件进行一些编码,并需要保存到一个.txt文件中,我正在SSIS中使用脚本组件

我已经使用SSIS脚本组件来执行此操作

//have declared 2 read write variable FIleLoc and FileWrite
string fileIn = Variables.FileLoc;
string fileOut = Variables.FileWrite;
var x = System.IO.File.ReadAllText(fileIn);
byte[] encodedBytes = System.Text.Encoding.UTF8.GetBytes(x);
byte[] unicodeBytes=
Encoding.Convert(Encoding.UTF8,Encoding.Unicode,encodedBytes);
System.IO.File.WriteAllBytes(fileOut, unicodeBytes);
Output0Buffer.Col = Variables.FileWrite;

当我尝试调试代码时,其显示包已成功执行,而.txt文件未生成。

您可以使用平面文件连接管理器读取
.dat
文件,并从代码页下拉列表中选择UTF-8编码,如下图所示。然后,无需编写脚本将
.dat
文件转换为
.txt
,只需使用包含平面文件源(.dat)和平面文件目标(.txt)的数据流任务即可(每个任务必须有单独的连接管理器)

如果需要使用脚本任务,我建议从平面文件连接管理器读取文件路径,类似于:

public void Main()
  {
      ConnectionManager conn = Dts.Connections["file.dat"];
      var path = conn.ConnectionString;
      //your encoding code 
      // if you want to access package variables use Dts.Variables["User::NeededVar"].Value;
      Dts.TaskResult = ScriptResults.Success;
  }

当我尝试调试代码时,它的显示包已成功执行,并且未生成.txt文件。为什么不使用平面文件连接管理器读取.data文件而不转换为txt呢?谢谢您的答复。我现在使用的.dat文件没有任何列标题。我将如何使用数据流将其加载到目标文本文件中任务。很抱歉问这个问题,我是SSIS新手。当您为源创建一个新的平面文件连接管理器时,您必须取消选中“第一个数据行中的列名”->这将插入到目标中,并且没有标题。否则,如果需要插入到带有标题的文件中,请选中该复选框,并在“高级”部分下“添加列标题”。@user3035090在平面文件连接管理器中,转到“高级”选项卡,手动添加列名称。