Классический 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, но это было некоторое время, поэтому он может быть неправильным:)

Другие вопросы по тегам