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

#c# #sql-server #ssis #flat-file #script-component

#c# #sql-сервер #ssis #плоский файл #скрипт-компонент

Вопрос:

У меня есть файл .dat. Мне нужно выполнить некоторое кодирование этого файла и сохранить его в файл .txt. Я использую компонент script в 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. Когда я пытаюсь отладить код, его отображающий пакет успешно выполнен, и файл .txt не сгенерирован

2. Почему бы не прочитать файлы .data с помощью диспетчера соединений с плоскими файлами без преобразования в txt

Ответ №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;
  }
  

Комментарии:

1. Спасибо за ваш ответ. В файле .dat, который у меня есть, нет заголовков столбцов. Как мне загрузить это в текстовый файл назначения с помощью задачи потока данных. Извините, что спрашиваю об этом, я новичок в SSIS

2. Когда вы создаете новый диспетчер соединений с плоским файлом для источника, вам нужно будет снять флажок «Имена столбцов в первой строке данных» -> это вставит в пункт назначения без заголовков. В противном случае, если вам нужно вставить в файл заголовки, установите этот флажок и в разделе Дополнительно добавьте заголовки столбцов.

3. @user3035090 в диспетчере соединений с плоским файлом перейдите на вкладку Дополнительно и добавьте имена столбцов вручную.