2011-08-08 70 views
3

我在读取具有字母数字数据的csv文件时遇到问题。下面是我在传统的ASP代码:经典asp - 读取包含字母数字数据的csv文件

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ 
ls_map_path & ";Extended Properties=""Text;HDR=Yes;FMT=Delimited"";" 


Set lo_conn = Server.CreateObject("ADODB.Connection") 
lo_conn.Open strConn 

Set lo_rs = Server.CreateObject("ADODB.recordset") 
lo_rs.CursorLocation = adUseClient 
lo_rs.open "SELECT * FROM " & as_file_name, lo_conn, adOpenStatic, adLockOptimistic, adCmdText 

,并在下面的数据:

user_id,status,last_name,first_name,middle_name 
1234,1,DeVera,athan,M. 
1234,1,De Vera,athan,M. 
ABC1,1,Santos,Shaine 
abcd,1,Santos,Luis 
1234,1,De Vera,athan,M. 
1234,1,De Vera,athan,M. 
ABC1,1,Santos,Shaine 

当读取使用lo_rs.fields.Item("user_id") “USER_ID” 一栏,它完美找回 “1234” USER_ID值。但其他具有字母数字值的数据将返回空值。

我不知道它为什么返回null的原因。但是,如果数据全部是字母数字,那么它会完美地读取user_id列。我认为唯一的问题是,如果csv数据在一列中具有混合数字和字母数字值。

有谁知道如何解决这个问题?或者我可能只是在连接字符串中缺少文本。

请提前告知并非常感谢您的帮助!

回答

2

要避开类型推断,您可以创建一个定义CSV文件中每列的类型的SCHEMA.INI

HDR=NO &在包含CSV(ls_map_path)创建Schema.ini的目录:

[filenamehere.csv] 
Col1=user_id Text 
Col2=status Long 
Col3=last_name Text 
Col4=middle_name Text 

由文本提供商所使用的类型映射现在都基于以上模式。

+0

好的,谢谢你的回答。尽管csv文件已上传并正在被我的网站阅读。含义,每当用户上传csv文件时,我都应该重新创建schema.ini文件?谢谢。 – jeff

+0

您可以通过使'HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Jet \ 4.0 \ Engines \ Text \ ImportMixedTypes = Text'而不是'Majority Type'来全局更改它。 –

+0

太棒了!谢谢。 – jeff