csv文件读取问题

时间:2011-07-08 08:28:37

标签: vb.net csv

所以我有一个csv文件:

"453FDG","656HGH","54645","MARIA","V543","534","TRETCITY","R34",09094553,09094553,09094553,"21/01/10","RE"
"45er3FDG","656HGH","54645","M343ARIA","V543","534","TRETCITY","R34",090-94553,0909-4553,090-94553,"21/01/10","RE"

问题1:

连接字符串是这样的:

Dim strConnString As String = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & System.IO.Path.GetDirectoryName(filediag.PostedFile.FileName).ToString & ";Extensions=asc,csv,tab,txt;Persist Security Info=False;HDR=NO;IMEX=1"

我的问题是当我使用这个schema.ini时,如果csv文件中有一个特殊字符(它应该是telphone号码),则csv文件第二行的第9,第10和第11列无法正确读取,我认为因为上面的行是一个数字(整数),因为它是纯数字:

[#42r.csv]:

  

ColNameHeader = false
  格式= CSVDelimited
  的MaxScanRows = 0
  CHARACTERSET = ANSI

那我该怎么办呢?

问题2:

由于我无法解决问题1,我尝试使用第二个连接字符串:

Dim sConnectionString As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & System.IO.Path.GetDirectoryName(filediag.PostedFile.FileName).ToString & ";Extended Properties='text;HDR=No;FMT=Delimited;IMEX=1"

这个问题是它将csv文件的第一行视为列标题。请帮忙。感谢。

1 个答案:

答案 0 :(得分:1)

问题是您正在使用Select * FROM CSVFILE.CSV。这迫使ADO推断数据类型,它可能只使用第一行。

最好的办法可能是遵循此问题中建议的架构:

When reading a CSV file using a DataReader and the OLEDB Jet data provider, how can I control column data types?