Ограничение столбца в CSV с использованием Microsoft Jet OLEDB - PullRequest
3 голосов
/ 24 марта 2009

Я импортирую данные из CSV, который содержит около 350 столбцов. Этот импорт CSV исправлен, и я абсолютно не контролирую его.

Если я пытаюсь открыть CSV в Excel 2003, он загружается только частично из-за ограничения столбца 255 (IV).

Когда я загружаю CSV в DataSet, используя OleDb и Microsoft.Jet.OLEDB.4.0, он также показывает только 255 столбцов. Еще хуже то, что при попытке доступа к данным для некоторых из этих 255 столбцов отображаются неверные данные и происходит несвязное разбиение значений.

Если я открою CSV-файл в Excel, разрешу ему обрезать данные и заново сохранить его, мой импорт будет работать нормально.

Мой вопрос: сталкивался ли кто-нибудь с этим ограничением с поставщиком Jet.OLEDB. Если да, есть ли решение проблемы? Если нет, есть ли альтернативное решение, которое может загрузить такой большой CSV?

Примечание: это не единственная задача, мне нужно предоставить конечному пользователю кнопку просмотра / загрузки, которая выполняет этот импорт по мере необходимости.

Ответы [ 4 ]

3 голосов
/ 24 марта 2009

Мы использовали http://www.codeproject.com/KB/database/CsvReader.aspx с большим успехом.

1 голос
/ 15 июня 2015

Вы можете пройти через этот код, Используйте ExcelDataReader и добавьте ссылку в свой проект. и используйте ниже код ...

FileStream stream = File.Open(strFileName, FileMode.Open, FileAccess.Read);
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
DataSet result = excelReader.AsDataSet();
excelReader.Close();
return result.Tables[0];
0 голосов
/ 04 декабря 2012

Поместите файл schema.ini в ту же папку, что и файл CSV. Смотрите здесь для полного синтаксиса.

0 голосов
/ 24 марта 2009

Я предлагаю сделать это объектно-ориентированным способом. попробуйте использовать библиотеку File Helpers. http://www.filehelpers.com/. Это позволяет вам иметь объектное представление для каждой строки в вашем файле. Затем вы можете сохранить этот объект в базе данных.

...