Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > СУБД, общие вопросы > 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 библиотека.....
С обьектами не выйдет. Нужны будут выборки, раз сказал база, значит -база smile)
Спасибо за ссылки, посмотрю. Мне главное структуру понять, говорят, что можно в блокноте их писать..

Автор: 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?

Да прога не должна быть привязана к базе...А DBF вроде все дрова по умолчанию в любой Винде стоят..
И к тому же, мне сказали, что я смогу работать с ним, как с текстовым файлом.
Т.е структуру я хочу руцями писать, а работать уже как с ODBC обьектом.

Автор: Akina 26.7.2005, 11:28
Цитата(Coocky @ 26.7.2005, 12:15)
DBF вроде все дрова по умолчанию в любой Винде стоят

Вот тут тебе наврали. По дефолту в Винде дрова вообще ни для чего не стоЯт - настраивать надо, а кое-что и инсталлить. Поставь чистую Винду (ты же под нее пишешь, не так ли?) по минимуму и посмотри что у тебя в источниках данных ODBC числится и (это главное!) что из этого можно использовать сразу, без настройки...

Автор: Coocky 26.7.2005, 11:36
Akina
Цитата
Поставь чистую Винду (ты же под нее пишешь, не так ли?) по минимуму

Ну у меня XP стоит англоязычная, без всяких офисов и т.д.
Так у меня и под Access есть...
Ну это в XP.
А вообще пишу, что б работало под все -от 98 до XP
Ну не знаю я, вроде ж DBF, даже если дрова поставить, базы никакойй не требует, и создать можно файл руцями..
Я ж Access не создам ручками..
Короче запарился я.
Что это вообще за формат? Мне просто намекнули, что мол его юзай..

Автор: Akina 26.7.2005, 11:53
Цитата(Coocky @ 26.7.2005, 12:36)
Что это вообще за формат?

Древний. Заголовок плюс данные в формате fixed whitespace-filled record length.

Первые 32 байта - заголовок файла (версия DBF, количество в нем записей, время последней модификации, количество полей, смещение начала данных...).
Далее 32-байтные блоки, каждый описывает одно поле записи (имя, длина, тип...).
Далее разделитель заголовка и данных (т.е. начало данных может НЕ СОВПАДАТЬ с инфой из заголовка - во как!).
Далее сами данные (каждая запись - определенное количество байтов на запись).
В конце - EOF.

Формат избыточен и противоречив.

Индексы отсутствуют, поскольку хранятся во внешних файлах, в зависимости от формата (а форматов DFB-индексов несколько) в одном индексном файле хранится либо один индекс, либо несколько. Проверка актуальности индекса практически невозможна (сравнивать время файла индекса и время последней корректировки DBF - идиотизм), работа с некорректным индексом в лучшем случае дает неверные выборки, в худшем разрушает данные.

Короче, откажись от DBF, мой тебе совет. Конечно строго ИМХО - геморроиться тебе, а не мне.

Автор: DENNN 26.7.2005, 12:10
Под псевдонимом dbf могут срываться разные структуры данных: dBase3, dBAse4, FoxPro,....

Читать и писать такие файлы зная структуру данных для сишника с опытом плевое дело. smile

Для того, чтоб понять, с чем имеешь дело, вот тебе формат dbf для http://forum.vingrad.ru/index.php?showtopic=38037&st=0&#entry290300.

Обычно вместе с dbf -файом идет еще 2-3 файла. В них индексы и прочее.

Автор: Coocky 26.7.2005, 12:11
Цитата
Индексы отсутствуют, поскольку хранятся во внешних файлах, в зависимости от формата (а форматов DFB-индексов несколько) в одном индексном файле хранится либо один индекс, либо несколько. Проверка актуальности индекса практически невозможна (сравнивать время файла индекса и время последней корректировки DBF - идиотизм), работа с некорректным индексом в лучшем случае дает неверные выборки, в худшем разрушает данные.

Упс..... smile
М_дя...
Спасибо....
И не знал, вот бы геммор был!

Автор: Coocky 26.7.2005, 12:21
Ну а что легенькое можно, в смысле с базу, что б ODBC была поддержка?
Добавлено @ 12:27
Цитата
Читать и писать такие файлы зная структуру данных для сишника с опытом плевое дело

smile
Вообще понятия не имею!
Сейчас гляну формат..

Автор: 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
Цитата(Coocky @ 26.7.2005, 15:16)
как связывать?

полностью вручную.

Цитата(Coocky @ 26.7.2005, 15:16)
Как данные хранить?

пишешь в конец, обновляешь заголовок.

Цитата(Coocky @ 26.7.2005, 15:16)
Как читать-построчно?

да, полный просмотр. можно кэшировать.


Автор: DENNN 26.7.2005, 14:31
Цитата(Coocky @ 26.7.2005, 14:16)
А как связывать?
Как данные хранить?

Тебе читать или писать надо? И надо все же уточнить какой стандарт dbf тебя интересует (в ссылке было описание для FoxPro).
Цитата(Coocky @ 26.7.2005, 14:16)
Мне б пример из двух таблиц...

Как тебе уже сказали, полноценную БД на 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
Цитата(Coocky @ 26.7.2005, 14:56)
вопрос-как организовать програмно установку SQLite на комп клиента вместе со своей прогой?

Там вроде не нужно под виндой вроде ничего устанавливать. Просто тащишь все dll или что там вместе со своей прогой + сам файл с данными.


Добавлено @ 15:08
Честно говоря, под виндой надо прояснить как именно работать. smile

Автор: 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
Цитата
А учусь я у Coocky, который мне выслал информацию по odbc
smile
Сомневаюсь... smile
Где берешь инфу про DBF?
Добавлено @ 15:40
Akina
Цитата
Это у тебя все локально?

Да...
Цитата
ну тады MSDE можно

smile
А что это, пардон.. smile
Я ж кроме Access,MySQL,InterBase ни с чем работать не умею.. smile

Автор: Akina 26.7.2005, 16:25
Цитата(Coocky @ 26.7.2005, 16:38)
А что это, пардон

SQL Server Desktop Engine.

MSDN - Data Access - Technical Articles - Microsoft Data Engine (MSDE)

Автор: Coocky 26.7.2005, 16:34
Akina
В пару слов на русском обьясни и я пойду учить smile
Это ты имеешь ввиду, что в студии установлена поддержка MSSQL?

Автор: mini 29.11.2005, 14:59
а как это вообще работает? как открыть dbf? как заполнить данными?
у нас допустим есть mdb + dbf + VB-прога...надо понять как выгружаются в конечном итоге данные.
лучше подробнее smile

Автор: Cashey 29.11.2005, 18:29
а что интересует? работа с dbf на уровне файла или работа с таблицей по средствам dataset, отталкивающегося от драйверов?

Автор: SergeBS 30.11.2005, 18:32
takedo
Цитата

А учусь я у Coocky, который мне выслал информацию по odbc да у MSDN. Понял теперь одно - в dbf очень мало типов данных, которые поддерживаются - в этом проблема

Попробуй привести пример, какой тип данных есть, например в MS SQL и отсутствует в DBF. Усложняю задачу: то же самое, но для FireBird/mySQL. Потом имеет смысл решить обратную задачу: что есть в DBF и нет в FireBird/mySQL. Для полноты эффекта smile

2ALL
Ну вы ваащще даете! Этак сразу - SQLite/MSDE и т.п. Если учесть, что вопрошающий вообще ничего про базы данных не знает, то это просто неприлично. Поскольку:

1. Какая база - в первую очередь зависит от задачи. Поэтому например, если многопользовательская работа не нужна, то MSDE однозначно идет в пешее эротическое. Кому нужна дурында под сотню МБ весом, если данных - гораздо меньше и не нужно заботиться о коллективной работе?

2. Альтернатив при практически любой задаче - дофига и более. Пример: количество только всяких SQL-серверов, относительно известных, скоро за 10 перевалит. А о компонентах доступа к Dbf-никам я вообще молчу. Лет 5-8 назад каждый программист, с DBF работающий, либо писал свою приладу для работы из Паскаля/С с DBF, либо собирал коллекцию таких прилад.

3. Не надо путать 2 разницы, а именно структуру данных и способ доступа. Способ доступа опять же диктуется задачей. Пример: в любой Винде есть механизм доступа к DBF-никам (и не только к ним) даже в минимальной конфигурации ее. Пакет называется MDAC. Что в него входит - сходите к мелкомягким и прочтите. Но лучше ну его нафиг. Дешевле и проще - нацепить какую-нито библиотечку типа Apollo/Halcyon и работать через них. В результате получим все в одном exe-шнике (кроме, есс-но БД), работающее независимо от погоды на Марсе, текущей версии патча и т.п. Короче, работающее на всем, что Win95 и свежее. Опять же для некоторых серверов есть библиотеки, даботающие с их базами напрямую (в обход серверов).

4. Сама задача кажется мне надуманной. Если нечто
Цитата

клон WEB CEO или NET_PROMOUTER
Мне нужно сделать статистику по сайту клиента(график), которая вклячает в себя-
1.Данные по разным категориям.
2.Даты данных, данные по N поисковому сайту.. и т.д.
Короче есть твой сайт, и по нему разные данные

то есть мааленький нюансик smile. Сайтов без серверов не бывает. А раз есть сервер, то есть и его инструменты по вычислению не только того, что выше, но и более хитрых вещей. Типа процента попадения в кэш активных страниц, кол-во каналов связи, сколько памяти сервер сожрал ... Причем на том конце, где сервер - это получается в 2 притопа и 3 прихлопа. А вот если пытаться снаружи такое забубенить - так это просто не получится. Пример: есть триалка. А когда платишь денежку, то тебе высылают адресок для скачки не-триалки. И сей адресок срабатывает только 1 раз, после чего самоликвидируется. Ну и найди статистику smile.
Просто мотаясь по сайту, адресок, есс-но не увидишь smile.

А для более простых затей есть просто счетчики посещения и ничего городить не надо.
Да, поясняю. Что за "данные по N поисковому сайту" я вообще не понял. Типа ищем поисковик, а потом у него интересуемся, есть ли у него хоть одна ссылка на наш сайт?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)