我在阅读具有字母数字数据的csv文件时遇到了麻烦。下面是我在经典asp中的代码:
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。
我不知道它返回null的原因。但是,如果数据都是字母数字,则它会完美地读取user_id列。我认为唯一的问题是,如果csv数据在一列中具有混合数字和字母数字值。
有谁知道如何解决这个问题?或者我可能只是在连接字符串中缺少文本。
请提前告知并非常感谢您的帮助!
答案 0 :(得分:2)
要绕过类型推断,您可以创建SCHEMA.INI
来定义CSV文件中每列的类型。
设置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
文本提供程序使用的类型映射现在基于上述模式。