所以我有一个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文件的第一行视为列标题。请帮忙。感谢。
答案 0 :(得分:1)
问题是您正在使用Select * FROM CSVFILE.CSV
。这迫使ADO推断数据类型,它可能只使用第一行。
最好的办法可能是遵循此问题中建议的架构: