阅读使用哈希分隔的CSV文件

时间:2016-12-19 13:47:49

标签: csv vbscript asp-classic

我从LDAP数据库导出CSV,我必须使用经典ASP页面读取数据。

CSV文件的格式类似于

CRDLVR47E67L781V#1653#CORDIOLI#ELVIRA#658#elvira.cordioli@sender.at#SI

我可以逐行读取文件,并且必须手动拆分该行。 如果我将#值更改为逗号,则可以按列访问该文件。我是否可以使asp页面能够按列访问文件,以获得保留#分隔符的单个值?

我的连接字符串是

Set oConn = Server.CreateObject("ADODB.connection") 
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=http://export/caselle.csv;Extended Properties='text;HDR=Yes;FMT=Delimited'"

我可以使用查询

从CSV文件中读取行
Set RS=Server.CreateObject("ADODB.recordset")
RS.open "SELECT * FROM utenti_aospbo.csv", oConn 

现在我只能阅读输出整行的rs.fields(0),如

CRDLVR47E67L781V#1653#CORDIOLI#ELVIRA#658#elvira.cordioli@sender.at#SI

我想

response.write rs.fields(0) 'CRDLVR47E67L781V
response.write rs.fields(5) 'elvira.cordioli@sender.at

1 个答案:

答案 0 :(得分:0)

虽然我无法排除在连接字符串中有某些版本的OLED执行HTTP或接受FMT FORMAT,但我确定数据源属性ADODB文本连接需要是文件夹

我没有尝试在连接字符串或注册表中指定全局分隔符,而是使用schema.ini文件以特定于文件的方式描述元信息。

一体化:

cscript 41224005.vbs
.\41224005.vbs
Option Explicit

Dim oFS  : Set oFS = CreateObject("Scripting.FileSystemObject")
Dim sF
For Each sF In Split(".\41224005.vbs ..\data\schema.ini ..\data\data1.txt")
    WScript.Echo sF
    WScript.Echo oFS.OpenTextFile(sF).ReadAll()
    WScript.Echo "---------------"
Next
Dim sDir : sDir    = oFS.GetAbsolutePathName("..\data\")
Dim sCS  : sCS     = Join(Array( _
                          "Provider=Microsoft.Jet.OLEDB.4.0" _
                        , "Data Source=" & sDir _
                        , "Extended Properties='" & Join(Array( _
                               "text" _
                           ), ";") & "'" _
                     ), ";")
Dim oDb  : Set oDb = CreateObject("ADODB.Connection")
oDb.Open sCS
'WScript.Echo oDb.ConnectionString
Dim oRS  : Set oRS = oDb.Execute("SELECT * FROM [data1.txt]")
WScript.Echo oRS.Fields(0).Value
WScript.Echo oRS.Fields(6).Value
oRS.Close
oDb.Close

---------------
..\data\schema.ini
[data1.txt]
FORMAT=Delimited(#)
ColNameHeader=False

---------------
..\data\data1.txt
CRDLVR47E67L781V#1653#CORDIOLI#ELVIRA#658#elvira.cordioli@sender.at#SI

---------------
CRDLVR47E67L781V
SI