запись файла .dat в файл .txt после кодирования с использованием ssis

У меня есть файл .dat. Мне нужно немного закодировать этот файл и сохранить его в файл .txt. Я использую компонент скрипта в SSIS.

Я использовал компонент SSIS Script для реализации этого .

//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 не создается.


person user3035090    schedule 30.03.2019    source источник
comment
Когда я пытаюсь отладить код, он показывает, что пакет успешно выполнен, а файл .txt не создается.   -  person user3035090    schedule 30.03.2019
comment
Почему бы не читать файлы .data с помощью диспетчера соединений с плоскими файлами без преобразования в txt   -  person Hadi    schedule 30.03.2019


Ответы (1)


Вы можете прочитать файл .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;
  }
person Ana Iuliana Tuhasu    schedule 30.03.2019
comment
Спасибо за ваш ответ. Файл .dat, который у меня есть, не имеет заголовков столбцов. Как я могу загрузить его в целевой текстовый файл с помощью задачи потока данных. Извините за вопрос, я новичок в SSIS - person user3035090; 01.04.2019
comment
Когда вы создаете новый диспетчер соединений с плоскими файлами для источника, вам нужно будет снять флажок «Имена столбцов» в первой строке данных -> это будет вставлено в место назначения без заголовков. В противном случае, если вам нужно вставить в файл с заголовками, установите этот флажок и в разделе «Дополнительно» добавьте заголовки столбцов. - person Ana Iuliana Tuhasu; 01.04.2019
comment
@ user3035090 в диспетчере соединений с плоскими файлами перейдите на вкладку «Дополнительно» и добавьте имена столбцов вручную. - person Yahfoufi; 01.04.2019