#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 в диспетчере соединений с плоским файлом перейдите на вкладку Дополнительно и добавьте имена столбцов вручную.