Чтение текстовых баз данных из ASP

Текстовые базы данных — это форматированные текстовые файлы с разделителями или как еще угодно называемые файлы, где каждый столбец данных разделяется с помощью заданного разделителя (запятой, точкой с запятой и т.п.), а каждая строка разделяется символом новой строки. Этот формат широко используется для обмена данными между приложениями, например, вы можете сохранить вашу таблицу из Excel или Access как файл CSV (comma separated file) и позднее импортировать данные из полученного файла в другое приложение. Данная статья описывает пример соединения с файлом CSV как с базой данных. Подобный пример может быть полезным при разработке онлайн сервиса, где клиент может экспортировать свои данные из Excel в базу данных вебсайта при помощи CSV-файла.

Для начала создадим файловый DSN драйвера текстовых файлов (Microsoft Text Driver). Это можно сделать при помощи ODBC32 в Control Panel либо вручную — создайте файл CSV.DSN и поместите в него следующий текст:

[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

Для работы примера создадим тестовый файл data.txt со следующими данными:

ID,Name,Price
1,"Chairs",$40.00
2,"Table",$75.00
3,"Fork",$1.50
4,"Lamp",$15.00
5,"Rug",$35.00

Теперь следующий код сохраним как ASP-скрипт:

<html>
<body>

<%
Dim sDSNFile
sDSNFile = «CSV.dsn»

Dim sScriptDir
sScriptDir = Request.ServerVariables(«SCRIPT_NAME»)
sScriptDir = StrReverse(sScriptDir)
sScriptDir = Mid(sScriptDir, InStr(1, sScriptDir, «/»))
sScriptDir = StrReverse(sScriptDir)

' Создадим DSN
Dim sPath, sDSN
sPath = Server.MapPath(sScriptDir) & ""
sDSN = «FileDSN=» & sPath & sDSNFile & _
«;DefaultDir=» & sPath & _
«;DBQ=» & sPath & «;»

' к примеру sDSN может получится таким:
' FileDSN=C:InetpubwwwrootCSV.DSN;DefaultDir=
' C:Inetpubwwwroot;DBQ=C:Inetpubwwwroot;

' Соединяемся с БД
Dim Conn, rs
Set Conn = Server.CreateObject(«ADODB.Connection»)
Conn.Open sDSN

' Получим только Name и Price
Dim sql
sql = «SELECT Name,Price FROM data.txt»

' Создадим объект recordset
set rs = conn.execute(sql)

Do WHile Not rs.EOF
Response.Write "Name: " & rs(«Name»)
Response.Write "<BR>Price: " & rs(«Price»)
Response.Write «<HR>» 
rs.MoveNext 
Loop

' Окончание работы
rs.close
set rs = nothing
conn.close
set conn = nothing
%>

<body>
</html>

Это все. Остается отметить, что все три файла для проверки работы примера вы должны сохранить в одной директории вашего веб-сервера.