У меня есть текстовые файлы с разделителями табуляции. Я создал Schema.ini так:
[MY_FILE.TAB]
Format=TabDelimited
ColNameHeader=False
Col1=id Short
Col2=data Text
Это код, который я использую для чтения (C #):
using (var connection = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\FolderToData\;Extended Properties='text;FMT=delimited'"))
{
using (var command = new OleDbCommand("SELECT * FROM MY_FILE.TAB", connection))
{
var table = new DataTable();
using (var adapter = new OleDbDataAdapter(command)
{
adapter.Fill(table);
}
}
}
Все отлично работает, кроме одной вещи. Данные в текстовом файле содержат возврат каретки [CR]. Записи сами по себе разделены фидами возврата каретки [CR] [LF]. К сожалению, OleDB / MicrosoftJet (или все, что разбирает эти файлы) обрабатывает оба ([CR], [CRLF]) одинаково.
Пример MY_FILE.TAB (должна быть вкладка между цифрами и текстом):
1 One[CR][LF]
2 Two[CR][LF]
3 Th[CR]
ree[CR][LF]
4 Four[CR][LF]
Дает мне 5 (неправильно сформированных) строк в таблице данных вместо 4.
Что мне нужно, это:
1 "One"
2 "Two"
3 "Th\nree"
4 "Four2
Но я получаю:
1 "One"
2 "Two"
3 "Th"
null null
4 "Four"
"ree" нельзя преобразовать в Int32, поэтому первый столбец в четвертом ряду равен нулю.
Как настроить OleDB для обработки [CR] отличным от [CR] [LF]? Или любые другие идеи?