经典 ASP - 如何在解析 CSV 文件时保留逗号
Classic ASP - How to preserve commas while parsing a CSV file
场景
4 列,ID、ParentID、Category、OrderNo 和 Category 中可以有逗号,例如 "Sales, Manager" 或 "HR, Recruitment" 所以我必须处理它而不知道这些词有在它们周围加上引号,因为它们使用的文件没有,所以我需要处理带有奇数个逗号的行,然后将这些行视为带有逗号的类别的行,所以它有点复杂。
我个人会使用 Microsoft Text Driver 来解析 CSV 文件,使处理数据更容易。
首先创建一个 text.dsn 文件并将其保存在您的网络应用程序中的某个位置(在示例中,我假设它位于 CSV 文件所在的位置)
[ODBC]
DRIVER=Microsoft Text Driver (*.txt; *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=25
MaxBufferSize=512
ImplicitCommitSync=Yes
FIL=text
Extensions=txt,csv,tab,asc
DriverId=27
然后把它当作一个普通的数据库连接 eg:
strPath = server.mappath("/csv/")
sDSNFile = "text.dsn"
strCSVFile = "test.csv"
sDSN = "FileDSN=" & strPath & sDSNFile & ";DefaultDir=" & strPath & ";DBQ=" & strPath & ";"
Set Conn = CreateObject("ADODB.Connection")
Conn.Open sDSN
sql = "SELECT * FROM [" & strCSVFile & "]"
set rs = conn.execute(sql)
do until rs.eof
id = rs("ID")
ParentID = rs("ParentID")
Category = rs("Category")
OrderNo = rs("orderno")
' do something cool here
loop
这样您就可以使用标准 sql
拉出所有开发人员
sql = "SELECT * FROM [" & strCSVFile & "] where Category='Developer'"
希望这个帮助ps。
ps。如果你没有安装它,我认为文本驱动程序作为 Microsoft Access Database Engine redistributable 的一部分包含在内,但已经有一段时间了,所以可能是错误的:)
场景
4 列,ID、ParentID、Category、OrderNo 和 Category 中可以有逗号,例如 "Sales, Manager" 或 "HR, Recruitment" 所以我必须处理它而不知道这些词有在它们周围加上引号,因为它们使用的文件没有,所以我需要处理带有奇数个逗号的行,然后将这些行视为带有逗号的类别的行,所以它有点复杂。
我个人会使用 Microsoft Text Driver 来解析 CSV 文件,使处理数据更容易。
首先创建一个 text.dsn 文件并将其保存在您的网络应用程序中的某个位置(在示例中,我假设它位于 CSV 文件所在的位置)
[ODBC]
DRIVER=Microsoft Text Driver (*.txt; *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=25
MaxBufferSize=512
ImplicitCommitSync=Yes
FIL=text
Extensions=txt,csv,tab,asc
DriverId=27
然后把它当作一个普通的数据库连接 eg:
strPath = server.mappath("/csv/")
sDSNFile = "text.dsn"
strCSVFile = "test.csv"
sDSN = "FileDSN=" & strPath & sDSNFile & ";DefaultDir=" & strPath & ";DBQ=" & strPath & ";"
Set Conn = CreateObject("ADODB.Connection")
Conn.Open sDSN
sql = "SELECT * FROM [" & strCSVFile & "]"
set rs = conn.execute(sql)
do until rs.eof
id = rs("ID")
ParentID = rs("ParentID")
Category = rs("Category")
OrderNo = rs("orderno")
' do something cool here
loop
这样您就可以使用标准 sql
拉出所有开发人员sql = "SELECT * FROM [" & strCSVFile & "] where Category='Developer'"
希望这个帮助ps。
ps。如果你没有安装它,我认为文本驱动程序作为 Microsoft Access Database Engine redistributable 的一部分包含在内,但已经有一段时间了,所以可能是错误的:)