| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Считывание данных из Assess (помогите найти ошибку |
| Автор: CiH 22.1.2009, 18:15 | ||
Дого пытался узнать, как считать данные из MS Access. На форумах отвечали, типа, Win32::ODBC, а там всё просто. Но это "всё просто" никто обяснить не хотел. С английски я не в ладах. На русском документации нет. А то, что выдаёт переводчик, разве только Задорнову читать со сцены. Нашёл наконец образец кода, подстроил под себя.
Скрин структуры таблицы в прикреплённом файле. Мне не нужно ничего туда добавлять, убирать. Просто нужно считать данные и всё. В базе, в таблице cdata есть куча записей, однако на выходе получаю пустой файл. Подскажите, пожалуйста, что тут неправильно. Только не забывайте, что новичок. |
| Автор: nitr 22.1.2009, 18:40 |
| CiH, скрипт вроде верный, хотя и написан новичком (ну и в таком стиле тоже, сейчас немного иначе), но повторюсь - рабочий. |
| Автор: CiH 22.1.2009, 18:40 |
| Ошибку нашёл. Иногда чтобы найти ошибку, достаточно рассказать о ней другому. |
| Автор: nitr 22.1.2009, 18:44 | ||
вот такой код что выводит?
Добавлено @ 18:45 CiH, и в чем ошибка? |
| Автор: ginnie 22.1.2009, 18:49 | ||||
| Извиняюсь за nitr, почему
а не
|
| Автор: CiH 22.1.2009, 19:05 |
| Ошибка до смешного проста. Невнимательность. Строка 5 SELECT * FROM cdata А таблица называется Cdata (с заглавной буквы) Поменял, и заработало. Наверно это... Хотя.... тот код, который ты привёл, выводит $VAR24081 = { 'pport' => '', 'cref' => '-1', 'uport' => ' 1066', 'cport' => ' 50300', 'cdata' => '24179149', 'rpuls' => '0', 'sqno' => '24081', 'info' => '0', 'flags' => '16814624', 'ppuls' => '1', 'dlps' => '414656', 'duration' => '54', 'rdata' => '17091121111111', 'xdata' => '', 'type' => 'A', 'tdate' => '2008-12-15 10:54:26' }; На каждую запись. Значит он таки видит данные. И видит верно. Ниччччииииво не понимаю. |
| Автор: nitr 22.1.2009, 19:46 |
| ginnie, привычка чтоб её... Кстати, ваша поправка в данном случае вернее - \%h. CiH, может вы и в мой код автоматически вставили верное название таблицы? |
| Автор: ginnie 22.1.2009, 19:50 |
| CiH, т.к. данных у Вас много, разумно вывод в файл делать внутри цикла получения данных, чтобы не сохранять все данные в массиве. |
| Автор: ginnie 23.1.2009, 12:26 |
| CiH, чтобы посоветовать что-то дельное, надо понять что Вам нужно. Опишите, что Вам нужно сделать, а мы подскажем, как и не нужно стеснятся, мы здесь любим всем помогать, особенно новичкам! |
| Автор: CiH 23.1.2009, 13:11 |
| Есть АТС. С него снимается биллинг. (кто куда когда звонил) Написал небольшой скрипт, который считает стоимость звонков и т.д. Дальше всё записывается в текстовые файлы (общий + отдельно каждый номер) в формате Кто - Куда - стоимость - Когда. При необходимости вызываю подпрограмму, которая складывает стоимость звонков за кокой-либо период по каким-либо номерам. Сделано в виде менюшек под cmd (в tk мне лезть ещё рановато, учитывая полное отсутствие документации на русском, а с CGI позже покопаюсь). В принципе все более-менее сложные расчёты делаются на стадии считывания и добавления в "базу" И скорость приличная. Но. Файл растёт не по дням а по часам (в месяц по 5-6 Mb). И я опасаюсь, что через пол года скорость подсчёта будет существенно замедлена. С dbm попробовал - не подходит. Подсчёт должен проводиться как по номеру, так и по дате (в перспективе и по номеру назначения). Вот и думаю, что взять за основу? Кстати, один вопрос, сколько дескрипторов одновременно можно открыть в винде 2000? |
| Автор: ginnie 23.1.2009, 13:22 |
| CiH, скажите, почему имея БД не использовать ее для решения этой задачи? Зачем хранить данные в текстовых файлах? |
| Автор: CiH 23.1.2009, 13:50 |
| БД MS Access. Скорость подсчёта за месяц. Access - 17 min. Perl - 19 sec. Представь годовой отчёт А считать приходится часто. Начальство лимиты выставило. |
| Автор: ginnie 23.1.2009, 13:53 |
| Скорее всего, Вы неверно работаете с БД (возможно нет нужных индексов). Приведите запрос, который долго работает. |
| Автор: CiH 23.1.2009, 15:03 |
| Код привести не могу, писал не я. Как я понял, долго сопоставляется исходящий звонок с кодом оператора и страны (их более 2000). |
| Автор: CiH 24.1.2009, 14:29 |
| У скрипта есть один минус. Жёсткая привязка к имени файла. Не подскажете, можно ли это как-то исправить? |
| Автор: tishaishii 24.1.2009, 14:58 | ||||
| Рубить надо Access с большими объёмами и переходить на что-то более мощное. Есть такая СУБД MySQL, в отличие от БД Access. Исправить... Вызов:
|