| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > СУБД, общие вопросы > dbf файлы.Как работать? |
| Автор: Coocky 25.7.2005, 17:44 |
| Нужно найти инфу по dbf формату.. Что за формат, какова поддержка, формат, как создавать и работать.. |
| Автор: Coocky 25.7.2005, 18:02 |
| У меня есть прога со сложной структурой информации.. Мне нужно данные сохранять, как в базе. Но прога не должна быть привязана не к одной из баз, а мне сказали, что файлы dbf можно руцями делать, прямо в блокноте, вот и ищу инфу... Что б из проги своей создавать и работать.. |
| Автор: z-END 25.7.2005, 18:07 |
| почитай тут: http://grandad.by.ru/dbfall.html |
| Автор: Akina 25.7.2005, 18:25 |
| Coocky На каком языке хоть пишешь? а то мож тебе проще прям объекты сохранять, а? |
| Автор: Golden Hands 25.7.2005, 23:23 |
| Coocky, в разделе литературы достаточно информации. |
| Автор: Coocky 26.7.2005, 10:23 |
| Akina VC++, MFC библиотека..... С обьектами не выйдет. Нужны будут выборки, раз сказал база, значит -база Спасибо за ссылки, посмотрю. Мне главное структуру понять, говорят, что можно в блокноте их писать.. |
| Автор: Akina 26.7.2005, 11:07 |
| Coocky DBF и база данных - уже давно понятия малосовместимые. Для того чтобы оно было хоть чуть-чуть похоже на базу (в смысле чтобы выборки) - как минимум еще нужны индексы (если прямой просмотр - для этого DBF городить не нужно), а индексы у DBF - структура не для слабонервных... и главное - оно тебе надо? уж лучше гони данные в файл без нифига и заголовка, структуру-то ты знаешь, а там хошь null-terminated, хошь fixed recordlength... а можно и в что-то более продвинутое (XML к примеру - их, в отличие от DBF, действительно можно в блокноте писАть)... или хотя бы CSV... а можно INI-like - для работы с ним API даже имеется... Ты поясни уж, почему ИМЕННО DBF? а то кажется, что ты "желаешь странного". |
| Автор: Coocky 26.7.2005, 11:15 | ||
| Akina Ну слушай, я заканчиваю писать клон WEB CEO или NET_PROMOUTER, если угодно.. Мне нужно сделать статистику по сайту клиента(график), которая вклячает в себя- 1.Данные по разным категориям. 2.Даты данных, данные по N поисковому сайту.. и т.д. Короче есть твой сайт, и по нему разные данные
Да прога не должна быть привязана к базе...А DBF вроде все дрова по умолчанию в любой Винде стоят.. И к тому же, мне сказали, что я смогу работать с ним, как с текстовым файлом. Т.е структуру я хочу руцями писать, а работать уже как с ODBC обьектом. |
| Автор: Akina 26.7.2005, 11:28 | ||
Вот тут тебе наврали. По дефолту в Винде дрова вообще ни для чего не стоЯт - настраивать надо, а кое-что и инсталлить. Поставь чистую Винду (ты же под нее пишешь, не так ли?) по минимуму и посмотри что у тебя в источниках данных ODBC числится и (это главное!) что из этого можно использовать сразу, без настройки... |
| Автор: Coocky 26.7.2005, 11:36 | ||
Akina
Ну у меня XP стоит англоязычная, без всяких офисов и т.д. Так у меня и под Access есть... Ну это в XP. А вообще пишу, что б работало под все -от 98 до XP Ну не знаю я, вроде ж DBF, даже если дрова поставить, базы никакойй не требует, и создать можно файл руцями.. Я ж Access не создам ручками.. Короче запарился я. Что это вообще за формат? Мне просто намекнули, что мол его юзай.. |
| Автор: Akina 26.7.2005, 11:53 | ||
Древний. Заголовок плюс данные в формате fixed whitespace-filled record length. Первые 32 байта - заголовок файла (версия DBF, количество в нем записей, время последней модификации, количество полей, смещение начала данных...). Далее 32-байтные блоки, каждый описывает одно поле записи (имя, длина, тип...). Далее разделитель заголовка и данных (т.е. начало данных может НЕ СОВПАДАТЬ с инфой из заголовка - во как!). Далее сами данные (каждая запись - определенное количество байтов на запись). В конце - EOF. Формат избыточен и противоречив. Индексы отсутствуют, поскольку хранятся во внешних файлах, в зависимости от формата (а форматов DFB-индексов несколько) в одном индексном файле хранится либо один индекс, либо несколько. Проверка актуальности индекса практически невозможна (сравнивать время файла индекса и время последней корректировки DBF - идиотизм), работа с некорректным индексом в лучшем случае дает неверные выборки, в худшем разрушает данные. Короче, откажись от DBF, мой тебе совет. Конечно строго ИМХО - геморроиться тебе, а не мне. |
| Автор: DENNN 26.7.2005, 12:10 |
| Под псевдонимом dbf могут срываться разные структуры данных: dBase3, dBAse4, FoxPro,.... Читать и писать такие файлы зная структуру данных для сишника с опытом плевое дело. Для того, чтоб понять, с чем имеешь дело, вот тебе формат dbf для http://forum.vingrad.ru/index.php?showtopic=38037&st=0entry290300. Обычно вместе с dbf -файом идет еще 2-3 файла. В них индексы и прочее. |
| Автор: Coocky 26.7.2005, 12:11 | ||
Упс..... М_дя... Спасибо.... И не знал, вот бы геммор был! |
| Автор: Coocky 26.7.2005, 12:21 | ||
| Ну а что легенькое можно, в смысле с базу, что б ODBC была поддержка? Добавлено @ 12:27
Вообще понятия не имею! Сейчас гляну формат.. |
| Автор: Coocky 26.7.2005, 12:42 |
| DENNN Мне не о чем твой пример не сказал! Ни хрена не понял! |
| Автор: DENNN 26.7.2005, 13:53 |
| Что ты там не понял? Там описывается структура заголовка и структура данных. Читаешь заголовок, из него у тебя есть вся инфа о записях: количество, адресс, с которого они хранятся и т.д. |
| Автор: Coocky 26.7.2005, 14:16 |
| А как связывать? Как данные хранить? Как читать-построчно? Мне б пример из двух таблиц... |
| Автор: Akina 26.7.2005, 14:30 | ||||||
полностью вручную.
пишешь в конец, обновляешь заголовок.
да, полный просмотр. можно кэшировать. |
| Автор: DENNN 26.7.2005, 14:31 | ||||
Тебе читать или писать надо? И надо все же уточнить какой стандарт dbf тебя интересует (в ссылке было описание для FoxPro).
Как тебе уже сказали, полноценную БД на dbf ты не получишь. Если стоит задача программно читать содержимое - это одно, а если обновлять две связанные таблицы - это уже другая задача. |
| Автор: Coocky 26.7.2005, 14:45 | ||
Мне нужна полноценное. Записиь, чтение, изменение.. Я понял, что стоит отказаться.. Ну а что легкое можете предложить? Из БД. В смысле маленькое, и удобное.. |
| Автор: DENNN 26.7.2005, 14:49 |
| http://www.sqlite.org/ |
| Автор: Coocky 26.7.2005, 14:56 |
| DENNN Еще раз спасибо, и напоследок вопрос-как организовать програмно установку SQLite на комп клиента вместе со своей прогой? |
| Автор: takedo 26.7.2005, 14:56 |
| Коль про dbf вы тут заговорили, гляньте на ссылочку пожалуйста http://forum.vingrad.ru/index.php?showtopic=59354# Coocky а чего отказываться??? Драйвер в ХР по умолчанию есть. Люди то пишут небось в SQLServer! А вот подумай, сколько стоит твоя программа и SQLServer??? А работать можно, только сложновато, сам сейчас разбираюсь. |
| Автор: Coocky 26.7.2005, 15:05 | ||||
takedo
Да ты читал, сколько всего партаков?
А ну есть у тебя ссылочки, где ты учишься? Или вышлю пару файлов, а я гляну внутреность А то допереть вообще не могу.. |
| Автор: DENNN 26.7.2005, 15:06 | ||
Там вроде не нужно под виндой вроде ничего устанавливать. Просто тащишь все dll или что там вместе со своей прогой + сам файл с данными. Добавлено @ 15:08 Честно говоря, под виндой надо прояснить как именно работать. |
| Автор: takedo 26.7.2005, 15:26 |
| Coocky Партаков то много - зато бесплатно. А учусь я у Coocky, который мне выслал информацию по odbc да у MSDN. Понял теперь одно - в dbf очень мало типов данных, которые поддерживаются - в этом проблема. Можешь ещё с Excel поработать, только вот я не понял каких размеров база данных у него? |
| Автор: Akina 26.7.2005, 15:37 |
| takedo Excel - не база данных. Coocky Это у тебя все локально? ну тады MSDE можно (надеюсь, 2 Гб тебе хватит?)... |
| Автор: Coocky 26.7.2005, 15:38 | ||||||
takedo
Сомневаюсь... Где берешь инфу про DBF? Добавлено @ 15:40 Akina
Да...
А что это, пардон.. Я ж кроме Access,MySQL,InterBase ни с чем работать не умею.. |
| Автор: Akina 26.7.2005, 16:25 | ||
SQL Server Desktop Engine. MSDN - Data Access - Technical Articles - Microsoft Data Engine (MSDE) |
| Автор: Coocky 26.7.2005, 16:34 |
| Akina В пару слов на русском обьясни и я пойду учить Это ты имеешь ввиду, что в студии установлена поддержка MSSQL? |
| Автор: mini 29.11.2005, 14:59 |
| а как это вообще работает? как открыть dbf? как заполнить данными? у нас допустим есть mdb + dbf + VB-прога...надо понять как выгружаются в конечном итоге данные. лучше подробнее |
| Автор: Cashey 29.11.2005, 18:29 |
| а что интересует? работа с dbf на уровне файла или работа с таблицей по средствам dataset, отталкивающегося от драйверов? |
| Автор: SergeBS 30.11.2005, 18:32 | ||||
takedo
Попробуй привести пример, какой тип данных есть, например в MS SQL и отсутствует в DBF. Усложняю задачу: то же самое, но для FireBird/mySQL. Потом имеет смысл решить обратную задачу: что есть в DBF и нет в FireBird/mySQL. Для полноты эффекта 2ALL Ну вы ваащще даете! Этак сразу - SQLite/MSDE и т.п. Если учесть, что вопрошающий вообще ничего про базы данных не знает, то это просто неприлично. Поскольку: 1. Какая база - в первую очередь зависит от задачи. Поэтому например, если многопользовательская работа не нужна, то MSDE однозначно идет в пешее эротическое. Кому нужна дурында под сотню МБ весом, если данных - гораздо меньше и не нужно заботиться о коллективной работе? 2. Альтернатив при практически любой задаче - дофига и более. Пример: количество только всяких SQL-серверов, относительно известных, скоро за 10 перевалит. А о компонентах доступа к Dbf-никам я вообще молчу. Лет 5-8 назад каждый программист, с DBF работающий, либо писал свою приладу для работы из Паскаля/С с DBF, либо собирал коллекцию таких прилад. 3. Не надо путать 2 разницы, а именно структуру данных и способ доступа. Способ доступа опять же диктуется задачей. Пример: в любой Винде есть механизм доступа к DBF-никам (и не только к ним) даже в минимальной конфигурации ее. Пакет называется MDAC. Что в него входит - сходите к мелкомягким и прочтите. Но лучше ну его нафиг. Дешевле и проще - нацепить какую-нито библиотечку типа Apollo/Halcyon и работать через них. В результате получим все в одном exe-шнике (кроме, есс-но БД), работающее независимо от погоды на Марсе, текущей версии патча и т.п. Короче, работающее на всем, что Win95 и свежее. Опять же для некоторых серверов есть библиотеки, даботающие с их базами напрямую (в обход серверов). 4. Сама задача кажется мне надуманной. Если нечто
то есть мааленький нюансик Просто мотаясь по сайту, адресок, есс-но не увидишь А для более простых затей есть просто счетчики посещения и ничего городить не надо. Да, поясняю. Что за "данные по N поисковому сайту" я вообще не понял. Типа ищем поисковик, а потом у него интересуемся, есть ли у него хоть одна ссылка на наш сайт? |