วิธีรับรายการคอลัมน์จากไฟล์ CSV โดยใช้ OleDb

ฉันสามารถรับรายการคอลัมน์จากไฟล์ Excel เช่นนี้ได้อย่างง่ายดาย:

columns = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new string[] { null, null, tableName, null });

ฉันต้องการทำเช่นเดียวกันกับไฟล์ CSV แต่ฉันไม่แน่ใจว่าต้องใช้พารามิเตอร์ใด สตริงการเชื่อมต่อของฉันกับไฟล์ CSV คือ:

"Provider=Microsoft.ACE.OLEDB.12.0; Data Source={0}; Extended Properties='text; FMT=Delimited(,); ReadOnly={1}; HDR={2}'".FormatString(directory, readOnly, (firstLineIsColumnHeaders ? "yes" : "no"))

ซึ่งกลายเป็นว่า (ในกรณีนี้) มีลักษณะดังนี้:

Provider=Microsoft.ACE.OLEDB.12.0; Data Source=C:\Windows\Temp\sadf83.tmp; Extended Properties='text; FMT=Delimited(,); ReadOnly=true; HDR=yes'

แต่เมื่อฉันพยายาม GetOleDbSchemaTable คำสั่งส่งคืนได้ตามปกติ แต่ให้ค่า DataTable ว่างเปล่าแก่ฉัน เช่นเดียวกันเมื่อฉันพยายาม GetSchema("Columns")


person Josh M.    schedule 05.04.2013    source แหล่งที่มา
comment
เป็นไปได้ที่ซ้ำกันของ รับตารางทั้งหมดและคอลัมน์ทั้งหมดจาก odbc ฐานข้อมูล   -  person MethodMan    schedule 06.04.2013
comment
@ I4V ไม่ยากเลย แต่ฉันควรใช้วิธีในตัวมากกว่าเขียนตรรกะเดียวกันใหม่!   -  person Josh M.    schedule 06.04.2013
comment
@DJKRAZE ขอบคุณ แต่ฉันได้ลองทั้งสองวิธีในโพสต์นั้นแล้วและฉันก็ยังจบลงด้วยการว่างเปล่า DataTable จริงๆ แล้วการเลือกข้อมูลจากไฟล์ CSV นั้นใช้งานได้ดี เพียงแต่วิธี OleDb ในการรับสคีมา/คอลัมน์นั้นใช้ไม่ได้ผล   -  person Josh M.    schedule 06.04.2013