Форум / CGI-программирование / Тема

+ Список Разделы Темы Новая тема Ответить Ответ админа Удалить Открыть/Закрыть Чат Барахолка Каталог
Реклама

Работа с MS Access через Perl

Статистика темы

Всего ответов в теме: 4
Просмотров темы: 2360

Goga
  Tue Jun 20 17:05:59 2006
Как работать с базами данных Microsoft Access (файлы .mdb) из под CGI Perl? Сервер на Windows, Access установлен. Помогите! Очень надо!
Мачете
Thu Jun 22 18:31:52 2006
Re: Работа с MS Access через Perl
В Perl с любыми БД можно работать через общий модуль работы с базами данных DBI.pm (подключается как
use DBI;
). Вообще с Access можно работать только через ODBC-драйвер, именно его и нужно задействовать из вышеназванной библиотеки. Но сколько я не пытался через Perl мне этого не удалось. Работаю через PHP, так-что если есть желание, то могу написать как работать c odbc в PHP (в PHP4 ODBC как и MySQL сразу-же подключен, в настройках не нужно подключать никаких DLL-библиотек).
Goga
Fri Jun 30 18:32:29 2006
Re: Работа с MS Access через Perl
А медленно не будет на PHP? Просто мне надо будет обрабатывать две таблицы: в одной около 36000строк, в другой около 650000!
Мачете
Mon Jul 3 20:38:17 2006
Re: Работа с MS Access через Perl
Ну если перебирать все 600000 строк в цикле, то и Perl и PHP задумаются на несколько минут. Perl конечно раза в полтора быстрее PHP, но обычно такие объемы данных обрабатываются в SQL-запросах, а языки только выводят на экран результаты в тех объемах, которые способен отобразить браузер. Короче я не буду обучать языку SQL, его семантику можно посмотреть в том-же конструкторе запросов MS ACCESS, а в PHP с Access работают так.
Подключаемся к базе данных, находящейся в файле C:\mydb.mdb

@$CONN=odbc_connect("Driver=Microsoft Access Driver (*.mdb); DBQ=C:\\mydb.mdb;","","");

Теперь можем работать с дескриптором $CONN. Посылаем SQL-запрос (например на получение всех данных из таблицы [my_table]:

$r=odbc_exec($CONN,"select * from my_table");

Через переменную $r можно получать результаты. Есть функция, которая сразу выводит весь результат в HTML-таблицу, но профессионалы все-таки любят собственное оформление. Получить строку результата можно так:

$result=odbc_fetch_array ($r);

При этом указатель автоматически перечещается на следующую строку. Переменная $result - ассоциативный массив, в котором содержатся все значения столбцов. Так значения столбца Code текущей строки лежит в переменной $result["Code"]. Вообще полный вызов функции odbc_fetch_array ($r,[numstr]), где numstr - номер нужной строки. При указании второго параметра вы соответственно перемещаете и указатель строк. Количетсво строк результата можно было-бы получить с помощью функции odbc_num_rows($r), но в большинстве случаев эта функция возвращает false. Поэтому при обработке результата нужно проверять $result. Если $result===false, то строки кончились.
В принципе при помощи трех указанных функций можно обработать любые базы данных, но если интересуетесь, то полный список функций PHP касательно ODBC можно без проблем найти в инете.
Goga
Thu Jul 6 15:44:30 2006
Re: Работа с MS Access через Perl
Большое спасибо Мачете! Все получилось.
Реклама
Карта сайта Created by Isety corp. (2005), Version: 1.0.2, Revision: 19.01.2007