https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver

чание: отвечая на мою собственную проблему, чтобы помочь другим в будущем.

Я читаю файл CSV с OleDB:

DataTable csvTableSchema = new DataTable();

//Open the CSV
string csvFilePath = "C:\\temp\\WithDateColumn.csv";
var connString = string.Format(
    @"Provider=Microsoft.Jet.OleDb.4.0; Data Source={0};Extended Properties=""Text;HDR=YES;FMT=Delimited""",
    Path.GetDirectoryName(csvFilePath)
);

//To read the csv with DataTypes we specify the columns and their datatypes in the Schema.ini
//REF https://docs.microsoft.com/en-us/sql/odbc/microsoft/schema-ini-file-text-file-driver

using (var conn = new OleDbConnection(connString))
{
    conn.Open();
    var query = "SELECT * FROM [" + Path.GetFileName(csvFilePath) + "]";
    using (var adapter = new OleDbDataAdapter(query, conn))
    {
        var ds = new DataSet("CSV File");
        adapter.Fill(ds);
        csvTableSchema = ds.Tables[0];
    }
}

Вот как выглядят файлы CSV:

Вот образец schema.ini

[ABC_20171128.csv]
Format = Delimited(|)
CharacterSet=ANSI
ColNameHeader=True
DateTimeFormat=dd MM yyyy hh:mm:ss

Col1 = Date DateTime
Col2 = AccountID Text
Col3 = SubAccount Text
Col4 = MarketCode Text
Col5 = SecurityCode Text
Col6 = Units Single

Я пробовал разные синтаксисы:

DateTimeFormat = дд мм гггг чч: мм: сс

Сбой с этим исключением:

System.Data.OleDb.OleDbException: 'В спецификации текстового файла' WithDateColumn.csv 'опция DateTimeFormat недействительна.'

DateTimeFormat = дд мм гггг

Этот синтаксис не вызывает ошибку, но столбец даты пуст.

Как мне прочитать DateTimes из CSV, используя файл Schema.ini?

Ответы на вопрос(1)

Ваш ответ на вопрос