Классический ASP - Как сохранить запятые при разборе файла CSV
Сценарий
В 4 столбцах ID, ParentID, Category, OrderNo и Category могут быть запятые, например, "Sales, Manager" или "HR, Recruitment", поэтому мне пришлось бы справиться с этим, не зная, что слова заключены в кавычки, как используемых ими файлов нет, поэтому мне нужно обрабатывать строки с нечетным числом запятых, а затем обрабатывать эти строки как строки с категориями с запятыми внутри, так что это немного сложнее.
1 ответ
Я бы лично использовал 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
Затем обработайте его как обычное соединение с БД, например:
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'"
Надеюсь это поможет.
пс. Если он у вас не установлен, я думаю, что текстовый драйвер включен как часть распространяемого ядра СУБД Microsoft Micro Access, но это было некоторое время, поэтому он может быть неправильным:)