2017-12-11 43 views
0

Hinweis: Beantworte mein eigenes Problem, um anderen in Zukunft zu helfen.Fehlende Datumsspalte in CSV-Datei mit Schema.ini-Datei


lese ich eine CSV-Datei 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]; 
    } 
} 

Dies ist, was die CSV-Dateien wie folgt aussehen:

enter image description here

Hier ist ein Beispiel des Schemas ist .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 

Ich habe verschiedene syntaxs versucht:

Datetimeformat = TTMMJJJJ hh: mm: ss

Fails wit diese Ausnahme:

System.Data.OleDb.OleDbException: 'In der Textdateispezifikation' WithDateColumn.csv 'ist die DateTimeFormat-Option ungültig.'

Datetimeformat = TTMMJJJJ

Diese Syntax kein Fehler, sondern die Datumsspalte verursacht leer.

Wie lese ich DateTimes aus einer CSV mit der Datei Schema.ini?

Antwort

Verwandte Themen