Создание приложения для БД в Lasarus
Модератор: Модераторы
Создание приложения для БД в Lasarus
Здравствуйте! Мне необходимо написать приложение в Lazarus для БД, написанной в OpenOffice Base. Подскажите какие компоненты использовать для связи с БД? И какие свойства в них менять?
Заранее спасибо!
Заранее спасибо!
Насколько я знаю, готовых компонентов для доступа к БД OO Base нет. Могу предложить выгрузить базу из Base во что-нибудь более вменяемое -- например SQLite или хотя бы DBF (это если из локальных), и писать приложение для работы с базой уже в новом формате. Единственный способ экспорта, который удалось сходу нагуглить -- это Base в CSV через SQL-запрос. Ну а уж из CSV дальше -- дело техники, и зависит от сложности данных.
Кстати, не спешите менять инструмент (FPC и Lazarus). Судя по этому посту OO Base вообще не очень дружелюбный формат для доступа извне. Проще поменять именно движок БД. Можно написать приложение для работы с удобной вам СУБД, и сделать в нём импорт из CSV, через который загрузить данные, полученные из OO Base.
Кстати, не спешите менять инструмент (FPC и Lazarus). Судя по этому посту OO Base вообще не очень дружелюбный формат для доступа извне. Проще поменять именно движок БД. Можно написать приложение для работы с удобной вам СУБД, и сделать в нём импорт из CSV, через который загрузить данные, полученные из OO Base.
Спасибо большое. Вы - мой спаситель! Я уже и не надеялась, что кто-то поможет.Я создала файл .CSV. Но у меня возник ряд вопросов:
1. У меня семь таблиц в БД и между ними установлены связи. Получается для каждой таблицы нужно создать свой файл .CSV? А как же связи между таблицами? А может быть я неправильно что-то поняла?
2. А как потом использовать эти .CSV файлы в приложении?
1. У меня семь таблиц в БД и между ними установлены связи. Получается для каждой таблицы нужно создать свой файл .CSV? А как же связи между таблицами? А может быть я неправильно что-то поняла?
2. А как потом использовать эти .CSV файлы в приложении?
Olga
1. В CSV можно выгрузить только данные. Связи к данным уже не относятся. Придётся их потом восстанавливать самостоятельно.
2. Не стоит файл CSV использовать как рабочее хранилище данных.
Лучше создать потом какую-нибудь широко распространённую БД и загрузить данные из файлов CSV туда.
Но, в принципе, можно работать и с CSV. Для этого есть компоненты в Lazarus под названием TSDFDataSet и TFixedFormatDataSet. Если у Вас файлы CSV содержат данные, которые отделены друг от друга каким-то символом-разделителем (например запятой), то нужно использовать TSDFDataSet, указав в свойстве Delimiter этот самый символ-разделитель.
1. В CSV можно выгрузить только данные. Связи к данным уже не относятся. Придётся их потом восстанавливать самостоятельно.
2. Не стоит файл CSV использовать как рабочее хранилище данных.
Но, в принципе, можно работать и с CSV. Для этого есть компоненты в Lazarus под названием TSDFDataSet и TFixedFormatDataSet. Если у Вас файлы CSV содержат данные, которые отделены друг от друга каким-то символом-разделителем (например запятой), то нужно использовать TSDFDataSet, указав в свойстве Delimiter этот самый символ-разделитель.
Импортируйте данные в базу firebird http://www.firebirdsql.org/ или sqlite, установите связи между таблицами например этим инструментом http://www.sqlmanager.net/ru/products/i ... r/download (он есть в виде бесплатной версии) Правда надо разбираться в SQL и знать , что такое внешний ключ.
В Lazarus есть компоненты доступа к серверу баз данных firebird. Напишите простой интерфейс и радуйтесь кросс платформенной базе данных
В Lazarus есть компоненты доступа к серверу баз данных firebird. Напишите простой интерфейс и радуйтесь кросс платформенной базе данных
Olga писал(а):1. У меня семь таблиц в БД и между ними установлены связи. Получается для каждой таблицы нужно создать свой файл .CSV? А как же связи между таблицами?
Vadim прав, связи придётся пересоздавать руками уже в новом формате. Наверное, проще всего будет это сделать через программу администрирования конкретной СУБД. Например, список программ для администрирования баз SQLite есть тут, для Firebird -- тут. Как именно в них задаются связи¸что можно, что нельзя -- тут я пас, вам придётся пробовать. Я бы начал проверку списков с программ под лицензиями GNU GPL и BSD.
Olga писал(а):2. А как потом использовать эти .CSV файлы в приложении?
Если между таблицами есть связи, я бы отказался от постоянного хранения базы в DBF и CSV, т.е. выбирал бы из SQLite и Firebird. Поэтому полученные CSV файлы нужно каким-то образом импортировать в новую базу SQLite или Firebird. Сначала нужно проверить программы администрирования, указанные выше. Если какая-нибудь из них поддерживает импорт из CSV -- замечательно, тогда можно создать в этой программе новую базу и импортировать туда ваши данные. Если это не получится -- придётся написать свою программку по преобразованию формата.
А если я CSV файлы буду импортировать в MySQL?
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
Olga писал(а):А если я CSV файлы буду импортировать в MySQL?
Можно и в MySQL, но тогда придётся заморачиваться с сервером MySQL (запуск, подключение и т.п.). Если программа работает локально, лучше взять SQLite - базовый синтаксис практически такой же, а использовать гораздо удобнее.
Полностью согласен с Nik по поводу SQLite. Тем не менее, если возникнет необходимость именно в MySQL -- данные из CSV в базу можно загрузить через phpMyAdmin:
http://vegdave.wordpress.com/2007/05/19 ... hpmyadmin/
http://stackoverflow.com/questions/571500
http://123techtalk.blogspot.com/2008/08 ... admin.html
http://forum.php-myadmin.ru/viewtopic.php?id=93
http://vegdave.wordpress.com/2007/05/19 ... hpmyadmin/
http://stackoverflow.com/questions/571500
http://123techtalk.blogspot.com/2008/08 ... admin.html
http://forum.php-myadmin.ru/viewtopic.php?id=93
- Nik
- энтузиаст
- Сообщения: 573
- Зарегистрирован: 03.02.2006 23:08:09
- Откуда: Киров
- Контактная информация:
GAMER писал(а):Но для этого должен быть установлен phpMyAdmin.
Если данные нужно экспортировать лишь один раз, можно поставить Denwer и сделать через phpMyAdmin. Но если нужен регулярный импорт на клиентских машинах - лучше придумать более автоматический способ (честно говоря, не представляю, как это сделать SQL-запросом).
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Я делаю так:
Разделители полей и строк можно поставить свои.
Код: Выделить всё
set names cp1251;
load data local infile
'form.txt'
replace into table
form
character set cp1251 fields terminated by '\t' lines terminated by '\n';
Разделители полей и строк можно поставить свои.
