2015-12-01 3 views
-1

Весь рабочий процесс состоит в том, что мне нужно прочитать файл csv, расположенный по пути, затем внести некоторые изменения в данные и затем загрузить данные в определенные таблицы через C#. Код C# выполняется внутри MSBI SSIS.Как читать файл csv в строчном формате в C#?

Я использую .Net StreamReader для чтения данных из пути к файлу.

var reader = new StreamReader(File.OpenRead(@"filepath")); 

Это работает очень хорошо, но после того, что я не в состоянии преобразовать StreamReader вывод в формат строки для некоторой комплексной модификации данных в строке.

Есть ли прямой литье, которое я могу использовать здесь? Любые альтернативные решения также приветствуются.

+2

System.IO.File.ReadAllText («Путь»); – MajkeloDev

+2

Ваш заголовок вопроса и тело не совпадают! В чем проблема, с которой вы сталкиваетесь, точно? –

+0

@ArghyaC, StreamReader возвращает значение var, в то время как WebClient.DownloadString (URI) возвращает строку. Код для модификации данных выполняется в соответствии со строкой. Мне нужно преобразовать переменную StreamReader в строку, чтобы я мог использовать остальную часть моего кода. Типовое кастинг здесь не работает. – Abhirup

ответ

0

Я хотел бы использовать

var reader = new StreamReader(File.OpenRead(@"filepath")); 
while (!reader.EndOfStream) 
{ 
    var line = reader.ReadLine(); 
    var values = line.Split(','); 

    //Do processing here, modify values and add to tables etc 
} 

значения объекта, то будет массив значений в порядке CSV.

Затем вы можете получить доступ с использованием значений [0], значений [1], значений [n] и т. Д. Выполняйте обработку по отдельным значениям и добавьте в таблицу запись по записи.

+0

Спасибо за ваш ответ. Я пробовал это, но проблема здесь в двух: для csv с несколькими строками и если они встроены в кавычки (так как есть поле адреса и может содержать ','). Другой - массив значений будет иметь тип «var». Это не позволит мне внести изменения в данные. – Abhirup

+0

Вы можете сначала разбить на «" », а затем разбить результирующие значения массива на основе«, ». И чтобы обойти проблему с var, просто отбросьте все, что вам нужно. Value.ToString() или int32.TryParse() будет полезен. Какой тип данных вам нужен из данных? И я уверен, что String.Split предоставляет массив String, а не var. – DarthJam

Смежные вопросы