OLEDB读取CSV文件仅返回第一列

时间:2012-11-30 13:11:28

标签: c# sql csv oledb

我试图读取管道分隔的文本文件。第一行是

"BewerberID"|"Druck"|"Druckdatum"|"HistorieID"|"Bearbeiter"|"BewZuBewGruppeID"|"Bemerkung"
"12586"|"EinladungOFD.dot                                  "|"03.02.2003 00:00:00"|"162"|"Petersen  "|"20295"|"ungültig"
"12807"|"EinladungOFD.dot                                  "|"27.02.2003 00:00:00"|"258"|"Petersen  "|"20617"|""
"12807"|"EinladungOFD.dot                                  "|"28.02.2003 00:00:00"|"270"|"Petersen  "|"20617"|""

以下是我正在使用的LINQpad脚本。它运行完美,但确实仅返回第一列的值。

string mySelectQuery = "SELECT * FROM Historie.CSV";
OleDbConnection connection = new OleDbConnection
("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\;" + 
   "Extended Properties=\"text;HDR=YES;IMEX=1;FMT=Delimited(|)\"");
connection.Open();
OleDbCommand cmd = connection.CreateCommand();
cmd.CommandText = mySelectQuery;
OleDbDataReader rdr = cmd.ExecuteReader();
rdr.Dump();
rdr.Close();
connection.Close();

仅返回第一列。

BewerberID 
12586 
12807 
12807

我尝试切换到列名SELECT BewerberID, Druck FROM Historie.CSV,但收到错误说明"至少有一个参数没有值"。 (顺便说一句:SELECT BewerberID FROM Historie.CSV确实有效,并返回与*)相同的

我需要做些什么来恢复所有列?

1 个答案:

答案 0 :(得分:4)

在与schema.ini相同的文件夹中创建名为Historie.CSV的文件(在本例中为C:\)。该文件应包含以下内容:

[Historie.csv]
Format=Delimited(|)
ColNameHeader=True

然后尝试重新运行代码。

一些链接: