Титла: Импорт на данни в OpenOffice Base Публикувано от: George Andonov в Dec 01, 2005, 16:03 Здравейте,
Въпросът ми е, какви са начините за импорт на данни от Excell файл (*.XLS) в OpenOffice Base? Допълнителна особеност е, че данните в Excell са в една таблица, а в OpenOffice Base таблиците са няколко (има Primary key, релации и т.н.). - Една идея, която ми хрумна, е с SQL заявка. Но не знам дали въобще мога да направя: Select * From Excell_File? - Друго което би свършило работа е нещо като SQL Loader(в Oracle се казва така). Това е парсер, който анализила някакви данни и update-ва дадена база с тях. Но има ли въобще такова животно за ОО? - Трети вариант е Excell-а да се свърже с базата и да "насипва" данни. С две думи: Зациклих на идейна основа. ![]() Дайте някакви насоки - Как да подходя? Какво и къде да чета. П.П. Това ще бъде еднократна миграция. Така, че не е задължително процедурата да е много автоматизирана или user-friendly. Титла: Импорт на данни в OpenOffice Base Публикувано от: Hapkoc в Dec 01, 2005, 16:14 значи не съм правил такова нещо но ми хрумват на първо време 3 вариянта:
1. ако не се лъжа имаше ODBC драйвер за Excel (някъде на microsoft.com трябва да го търсиш), с който можеш да пускаш sql върху excel-ски spreadsheet (нали така се водеха). не го препоръчвам, щото ми се струва много омотано - да го инсталираш, да видиш какъв е синтаксиса на SELECT-ите за ексела... 2. ако OOBase поддържа импорт от CSV това ти е решението - от excel-а експортираш CSV и го импортваш в OOBase 3. ако OOBase има възможност да взима данни от OOCalc - импортваш си excel-скя файл в Calc и оттатм в Base за първия вариянт аз както си го представям ще трябва да има програма, която прави връзка към excel-ския файл през ODBC и едновременно има връзка с базата на OOBase, което ми се струва доста играчка. другия вариант, да се направи програмка, която селектва данните от excel-а и генерира INSERT-и за OOBase, което в момента, в който го написах генерира и 4ти вариянт, а именно - някакъв скрипт (на perl ми се върти), който чете експортирания от excel CSV файл и генерира INSERT statement-и на базата на него. после пускаш INSERT-ите да налеят информацията в OOBase и си готов. комай посленото най-смислено ми звучи. поздрави и ако достигнеш успех кажи как точно си процедирал Титла: Импорт на данни в OpenOffice Base Публикувано от: George Andonov в Dec 01, 2005, 16:30 Най ми харесва третата ти идея. Данните в OO Calc, и от там в OO Base.
Проблемът ми е, че неможах да намеря начин да прехвърля данни в OOBase от OOCalc ![]() Явно нещо ослепявам ![]() ![]() Абе не е на добре. Титла: Импорт на данни в OpenOffice Base Публикувано от: Hapkoc в Dec 01, 2005, 16:46 ми гледай, аз идея си нямам дали изобщо може от oocalc в oobase да се прехвърлят данни. просто ми хрумна, че хората от openoffice.org може да са се погрижили да има някаква интеграция между двете приложения, т.е. много е вероятно да няма такава възможност.
Титла: Импорт на данни в OpenOffice Base Публикувано от: alabal в Dec 01, 2005, 17:19 Отговорът, братя, според мен е много простичък. Въпреки, че верояно идеята която има gandonow ми е малко неясна.
Стартира се OpenOffice, избира се Connect to an existing database и от менюто SpreadSheet и всички таблици се появяват в базата данни. След което могат да се правят всякакви видове форми и търсения, но не могат да се създават таблици. Таблици могат да се създадат само в Excel-ския файл с който е вързана базата данни. Другият проблем е този, че база свързана към екселски файл не е релационна, а и не е възможно със Paste Special да бъдат свързани двата файла. Edit: не знам за odbc, mysql и excel - звучи ми интересно, но дори и да бъде инсталиран, то новата база данни, която ще се получи отново няма да бъде напълно релационна, така, че това е което мога да кажа. Братко gandonov разкажи повече за целите за които ще използваш тази база, може да измислим нещо. New_Edit: Все нещо забравям: Та, ако създадеш нова таблица във свързания с Base файл тя ще се появи при следващото обновяване на базата - т.е. всяка промяна в Spreadsheet се отразява, все едно OpenOffice е свързан с външна база данни. Титла: Импорт на данни в OpenOffice Base Публикувано от: Hapkoc в Dec 01, 2005, 18:10 /offtopic
На тая хава за odbc-то целта и е като имаш някакви данни в ексел и искаш да ги достъпиш през стандартно api за бази данни. То е ясно, че ексела не е релационна база от данни и изобщо не е никаква база от данни, а е програма за работа с електронни таблици, но понякога му се налага на човек да прави такива магарии и е удобно за такива цели. ![]() Титла: Импорт на данни в OpenOffice Base Публикувано от: alabal в Dec 02, 2005, 01:55 Относно парсер-а - няма такова нещо. Получаваш таблиците от външната база данни така както са записани в нея (същото важи и за Spreadsheet).
Ако искаш идея как да използваш таблиците от Excel и да ги въведеш в истинска база данни, мога да дам една чисто теоритична такава - записваш таблиците като csv файл от Excel (или може би текстов файл - то май csv беше текстов с табулации) и ги въвеждаш в postgresql - знам къде е примера как става, но нямам време да го разглеждам подробно. Погледни тук този пример. А ето тук е пълното описание на командата COPY. Има и описание на копирането на информация от csv файл. Дано това да ти върши работа. След което можеш спокойно да използваш OpenOffice с драйвъра за postgreql - работи и съм го тествал и в мрежа - никакви проблеми. Титла: Импорт на данни в OpenOffice Base Публикувано от: George Andonov в Dec 02, 2005, 10:53
Първо да обясня за какво се използва въпросната база. В Excell-ски файл са данните за всички клиенти (имена, адреси, номера, продукти, услуги, оборот и т.н.). Всеки месец се генерират куп фактури, пощенски пликове и разни др. документи (прави се с Mail Merge). Недостатъците са, че трудно се правят "сложни" документи (с повече логика и формули). Затова пренаписвам back-end частта на системата, данните да се съхраняват в база (таблици, view-та, релации и т.н.), а не във flat файлове. И сега за проблемите ми: Разбрах как да прехвърлям данни от OOBase в OOCalc. 1. Стартира се OOCalc. 2. От менюто Tools - Options - OpenOffice.org Base - Connections се добавя базата с данни (нов data source). 3. Отваряш новият Data Source и имаш достъп до всичси обекти в базата. Маркираш данните(от базата) и избираш Data to Text. И paste на данните в OOCalc. Само, че на мен ми трябва точно ОБРАТНОТО ![]()
Би ли казал, как точно се прави? Следващ въпрос: Как точно се вкарват данни от CSV (Comma Separated) файл в OOBase? И още нещо което ми хрумна. Написал ли е някой функцията Slovom() за OpenOffice? Ако я имате, дайте я насам. ![]() Ако никой я няма, аз ще я напиша другата седмица. Титла: Импорт на данни в OpenOffice Base Публикувано от: alabal в Dec 02, 2005, 11:32 Грешката е езикова - Отваряш OpenOffice Base. При стартирането има три опции -
Create Data Base Open an existing data base Connect to an existing data base Избираш третото. Отодолу под него има падащо меню от което избираш SpreadSheet. За COPY - ако погледнеш втория линк ще видиш, че има специфичен синтаксис за import на csv файлове. Иначе трябва да си направиш структурата на таблицата с INSERT и после да използваш COPY. За съжаление, в момента не мога да инсталирам postgresql, за да пробвам - и на мен ми е интересно, а и ще е полезно за едно две неща. Виж, обаче какво пише за csv файловете:
Както и да е. Четох, че има програми за автоматизирана връзка между Excel и postgresql, но намерих само за windows и всичките платени здраво, вероятно има и opensource, но аз не намерих. След като си направиш базата със старите данни от excel за postgresql можеш да правиш всички тези неща които си написал директно към нея и да ползваш OOffice за frontend, та дори и да я направиш централизирана с права за достъп от различни работни места и пр. и пр., което с access би струвало една прекрасна сума, която ако ти дадат 10% премия за запазването й ще изкараш доста весела Коледа и Нова година. А в excel има ли я тая функция "Slovom()" - ако я има там има я и в OpenOffice- ако не - можеш ти да я напишеш - аз не съм срещал до сега подобна функция. Титла: Импорт на данни в OpenOffice Base Публикувано от: George Andonov в Dec 02, 2005, 12:12
![]() Имаш бира от мен. Или по-добре повече бири. Точно там не бях погледнал. Това е защото не спирам OpenOffice-а ![]() Относно Slovom():
Това е ценна функция, ако изготвяш документи. Счетоводно изискване е сумите да бъдат изписани "словом", т.е. 2 716.54лв. - "Две хиляди седемстотин и шестнадесет лева и петдесет и четири ст." В Excell, разбира се, я няма. Аз си я написах. Няма да е особен продлем да я port-на за OpenOffice. Титла: Импорт на данни в OpenOffice Base Публикувано от: alabal в Dec 02, 2005, 12:36 Няма проблем - бирите ще ги изпием, но все пак използването на SpreadSheet като база данни си е дървено решение според мен - означава, че ще работиш с ols файла и после ще правиш справки в Base. Мисля, че и View не можеш да направиш по тоя начин.
По-качественото би било да се импортнат данните в postgresql, отново според мен. Титла: Импорт на данни в OpenOffice Base Публикувано от: George Andonov в Dec 02, 2005, 12:52 Въобще не смятам да използвам SpreadSheet като база с данни. Целта ми е еднократно да импортирам данните в новата база, която е HSQL Database Engine.
Вече съм почти готов. Да ти кажа какво направих. 1. Отворих старият Excell-ски файл в OOBase (по твоя начин). 2. Отворих си новата база, в OOBase. 3. Drag-and-drop на таблиците от старата база в новата. Така прехвърлих данните в нови таблици, като запазих старата структура на данните. 4. Сега ми остава да разхвърлям данните по новите таблици. ![]() Титла: Импорт на данни в OpenOffice Base Публикувано от: alabal в Dec 02, 2005, 12:57 Тая база данни не я знам. Аз четох, че ставало и с релации, но твоя начин ми изглежда по-лесен. Хайде да опишеш процеса в едно кратичко howto. Pls.
А аз ще тичам, че окъснях безндадеждно. Титла: Импорт на данни в OpenOffice Base Публикувано от: George Andonov в Dec 02, 2005, 13:14 HSQLDB е вграденият database engine в OpenOffice.org. Поддържа ANSI-92 SQL, SQL 99, 2003 и всякакви екстри.
Много е удобна за малки задачи, като моята. Има смисъл от инсталиране и конфигуриране на отделен DataBase сървър, само ако приложението нарастне сериозно. Но тогава миграцията към MySQL, PostgreSQL, Oracle или нещо друго, е тривиална. Титла: Импорт на данни в OpenOffice Base Публикувано от: Hapkoc в Dec 02, 2005, 13:55 HSQL определено е удобна за такива цели, но машината на която се ползва трябва да е сравнително добра, 'щото е писана на Java
![]() При мене на G3/400MHz се задъхва силно ![]() |