2017-12-11 65 views
0

참고 : 향후 다른 사용자를 돕기 위해 내 자신의 문제에 대답하십시오.Schema.ini 파일을 사용하여 CSV 파일의 날짜 열이 누락되었습니다.


가 나는 CSV가 인 OleDB로 파일을 읽고 있어요는 :

여기 enter image description here

스키마의 샘플입니다

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 파일이 어떻게 생겼는지입니다 .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 

내가 해봤 다른 syntaxs :

DateTimeFormat = DD MM yyyy를시 : 분 :

System.Data.OleDb.OleDbException : SS는

재치에게이 예외를 실패 : '텍스트 파일 사양'WithDateColumn.csv '에서 DateTimeFormat 옵션이 잘못되었습니다.'

DateTimeFormat = DD MM이 구문에 오류가 있지만 날짜 열이 비어 발생하지 않습니다 YYYY

.

Schema.ini 파일을 사용하여 CSV에서 DateTimes를 읽으려면 어떻게해야합니까?

답변