запись файла .dat в файл .txt после кодирования с использованием ssis - PullRequest
3 голосов
/ 30 марта 2019

У меня есть файл .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 не генерируется.

1 Ответ

1 голос
/ 30 марта 2019

Вы можете прочитать файл .dat с помощью диспетчера соединений с плоскими файлами и выбрать кодировку UTF-8 в раскрывающемся списке Кодовая страница, как указано на рисунке ниже. Затем вместо написания сценария для преобразования файла .dat в .txt вы можете просто использовать задачу потока данных, которая содержит источник плоских файлов (.dat) и назначение плоских файлов (.txt) (каждый из которых должен есть отдельный менеджер соединений) .

enter image description here

Если вам нужно использовать задачу «Сценарий», я бы посоветовал прочитать путь к файлу из диспетчера соединений с плоскими файлами, аналогично:

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;
  }
...