экспорт/импорт Эксэль<=>БД

Carolyne
Дата: 05.02.2004 14:04:13
нужно делать сабж...
на первых порах подойдет просто экспорт в БД.
заливать туда надо данные по фирмам. параметры: название, дата регистрации, налоговая, регион и прочее... из этой БД выцепляются данные и показываются у нас на сайте (это, вроде, работает)... может, кто поможет?
Shweik
Дата: 05.02.2004 18:21:23
Ну вот... Апять.... 8-) Сделай поиск по разделу - ключевое слово
экспорт!
etsilop
Дата: 09.02.2004 15:05:57
Я в настоящее время этим запарен - perl в жубы с модулями DBI, Text::Iconv, Spreadsheet::ParseExcel и Spreadsheet::WriteExcel и вперёд на мины.
В принципе ничего особенного, всё работает, данные туда-сюда гоняю без проблемм, вот хочу ещё картинки попробовать из екселя повыкалупывать и в базу положить.
P.S. ОС FreeBSD бд Postgres 7,3 и 7,4
Carolyne
Дата: 17.02.2004 14:32:03
2 Shweik: очень остроумно! ты сам-то искал?

ВОПРОС ОСТАЕТСЯ ОТКРЫТЫМ!
Konrad
Дата: 17.02.2004 15:06:27
Carolyne, а почему Вас не устраивает ссылка Shweik'а? Там как раз все по вашей проблеме.
Shweik
Дата: 18.02.2004 01:37:41
Uhhhhggg тобишь Гррррр! "Так как коротко писать долго - буду писать много"
(с) Л.Толстой 8-)
Carolyne, хотелось бы о том же спросить Вас!
А Вы заглядывали на www.sourceforge/www.ya.ru/www.altavosta.com? Или это слишком сложно?
Что касается меня - ответ прост : да искал! И не только на этом форуме
Искал и нашел то что мне нужно достаточно приемлемое решение - *регуляного* и *автоматического* экспортирования разнородных данных c M$ машины.
не просто искал а похерил около двух дней пока уяснил что нормальные люди, в том числе и Borland предпочли забыть был(а кое-где и посей день есть) такой продукт PARADOX DB!!! И ODBC DSN под UNIX для нее мне не видать тем более нашару.
И ничего для портирования его таблиц окромя pxtools нет. Но копировать файлы к себе или делать доступ к ним через smbclient мне не хотелось.
И мне товарищ посказал что есть такое направление - ODBC-proxy!
Есть коммерческий продукт http://www.easysoft.com/ тк из-за закрытости и
направленности на Linux мне его полоценно установить не удалось Может он достаточно стабилен - руки кривы не знаю. Разрекламирован он в Сети прилично-если найдете и установите - напишите.
А я стал разбираться с dbctp Проект сырой - я уже кажется писал на форуме.
Очень мощной нагрузки явно не выдержит, но мне ведь не базы WebRing экспортировать а пару сотен табличек ну и ~~500 файликов с smb свалок на рабочих станциях и главном вин-мусорнике 8))!!!
Основные задачи :
1) постоянный экспорт урезанной копии базы на сайт контры. Точнее синхронизация трех десятков табличек.
2) постоянный линк в фискальную статтабличку, которую я из принципа не держу по виндой!
3) дневной (сброс бакапа на матрицу)
4) еженедельная отправка прайсов&модулей в газету(почти тоже что и на сайт но формат экспорта - отдельная история) .
И еще пяток внезапно наваливающихся задач
которые я _принципиально_ под FreeBSD но вот данные для них
поступают именно со свалок *mdb *xls и из M$SQL,
складываются для обработки в базы Постгреса и обрабатываются там.
а самое для меня главное из *.db файлов !!!
Вот я и сел почитал доку - скачал исходники собрал сервер под Delphi
IMHO последнее - явный признак неполноценности и ненадежности проекта но
мне это в силу привычки облегчило жизнь. Паскалист -звучит гордо! 8))
Переписал его под Win2K чтоб пускать как сервис. Оригинал этого не могет
- предлагают юзать firedaemon.
Итак сервер собран. Пускаем - замигал пингвинчик в трейе.
Клиент под *Nix собирается враз! Тут и говорить не о чем.
Просто ./configure && gmake!
Пробуем коннектиться. Например :
echo "select sn,uname,roperation,sm1 from t1" | /usr/ubin/dbtcp --separator=',' DSN=pxWS08 192.168.83.31 | mkins --with-values | psql -U shweik -d pxdb
Что тут сказать. Этот клиент идеально заточен под экспорт всего что мне нужно окромя BLOB - с ними я разбираюсь отдельно, впрочем это довольно экзотический случай - фоток у меня в базах уже нигде не осталось - гораздо проще оказалось сваливать их на смб мусорник и хранить линки. А RTF он и в Африке и во FreeBSD - RTF. Запрос передается через конвеер(трубу) клиенту
--separator - разделитель.
DSN - тот data soursce ODBC к которому мы и коннектимся. Были приколы при первых пробах под Win2K - оказалось что ODBC API там такой да несовсем.
далее идет адрес хоста и через конвертор mkins ( сам нацарапал - делает
инсерты или заголовок комманды COPY ) и далее опять поконвееру попадает
в psql! Работает это с нормальной скоростью - говорю с уверенностью тк металлолом у меня под это выделен раритетный - просто по приколу было
включить в свой зверинец брэндовый PS/2 model 80! Это i386- там аж 16 метров памяти и крутейший винт аж на 210 МБ ! Впрочем я отвлекся.
Готовых и бесплатных решений на тарелочке для данной темы пока нет.
Может просто я их не нашел. Google вам впомощь в таком случае.
1)
можно использовать и DataPumper (была такая утилита в поставке Borland Delphi )
или еще что-то перекачивая данные через ODBC или написать апликуху
делающую это напрямую. Это наиболее удобный вариант,если
постгрес крутится под Виндами.
2) Как Setup For Imaptent ;) я бы посоветовал
EMS утилиты для Постгреса
Только вот с *.DB они тоже недружат тоже сыроваты да еще закоыты и
просют my-motnth-salry за лицензию.
И с вопросами как их ломать идите в сад! Или на www.crack.ru Или еще в сексуальное пешеходное турне. Здесь-таки не форум кулхацкеров 8-)) .
И ПостгреSQL -открытая СУБД думаю что логично делать упор на утилиты аналогичными лицензиями. Поверьте так спокойнее.
Если по dbtcp/ZDO есть _конкретные_ вопросы пишите если знаю ответ и выкрою время - отвечу. Может если конкретезируете задачу придумаю решение попроще.
Высылать ничего не буду - есть http/ftp! Да кабы я не стыдился своего кода - давно бы выложил на http://sourceforge.net/badbtcp свое виденье этого проекта. 8-\)
К сожалению авторы мои поправки/предложения пока не приняли.
Вот и все что я думаю по теме экспорта из разных форматов в PostgreSQL.
Наверное пора закрывать тему.
Интересно правда, что по поводу экспортирования думают более опытные товарищи?
А вообще , Carolyne "Думайте сами решайте сами иметь или не иметь" 8-)
Потому что вычитав архивы mail-lists постгреса я ничего особо примечательного
по теме не нашел. Впрочем все вышеописанное делалось два годика назад.
И еще если время в дальнейшем потвердит правильность моего
выбора и найдутся желающие реально помочь - я все-таки попытаюсь упростить для желающих тыкать по кнопкам работу с dbtcp и вообще попытаться отладить
его (при тестах на нагрузку он все таки нестабилен) . Да и вообще может кто-то его серверную часть на Си перепишет по-людски!
Все-таки Delphi - не промышленный стандарт 8))
Carolyne
Дата: 18.02.2004 11:32:12
Shweik, сорри за прошлый ответ - писала после очередной ругани с ХайВеем...
собсна мне-то хотелось именно
Shweik
Готовых и бесплатных решений на тарелочке
ибо напрягаться достало. если от меня требуют полной автоматизации и ненапряжности работы, то мне ее тоже хочется поиметь. 8-)
вот, поставила-таки EMS-утилиты, но обнаружилась еще одна проблема: эти милейшие люди из HW закрыли практически все порты... в том числе и, ессна, 5432. /тихо матерится/
assa
Дата: 18.02.2004 14:38:57
Я лью данные из аксесса (несколько mdb с исходными данными) в PostgreSQL через ODBC. Приблуда примитивная (Аксес97). Запущается по ночам автоматом (перебор исходных файлов данных + собсна втяг + ведение лога работы). Естественно, для ip компа, где все это крутится, требуется настройка доступа на сервер. Основная задача - логическая непротиворечивость заливки (что делать при изменении/удалении уже залитого в ранних сеансах). - Проще всего заливать (аксесом или иначе) в "мусорку" (специально организованные таблички с минимумом ограничений) на сервере, а логику разборки "мусорки" по конечным таблицам запускать на PostgreSQL как хранимки (я начинал на 7.2, с неработающим pgplsql, посему собирал текст транзакций (BEGIN;...END;) акcесом (как строку) и отправлял серверу).

Т.е. Jet у меня выкладывает данные из подключенных источников по ODBC в PostgreSQL. Остальное (с данными) производит сам PostgreSQL.

Аксесс, примитивно втягивает данные и из екселя. То же можно и в дельфях.
Shweik
Дата: 19.02.2004 17:27:57
Интересно.... в наших краях ISP имеет обычай оставлять на твое усмотрение
что ты будешь прикрывать а что нет. Впрочем если скорость каналов
будет расти пропорционально снижению квалификации(а соотв и зарплат)
админов 8))), подход 65535 deny ip from any to any довольно оправдан.
Кинули ADSL - "ынтернет"(http) ходит? - ну и ладушки. Остальное отрубим.
Подход ISP в принципе правильный - зачем оставлять стандартный
порт открытым ? И вообще твой шлюз может выходить в какую-то левую
сетки ISP вроде 192.168.15/3 Это нормально - просто нужно
подумать малехо и попросить админа провайдера настроить
IP-masqurading(forwarding), точнее добавить правила
для переброски входящих пакетов по порту допустим 219413
Конечно pg_hba.conf у тебя должен быть настроен более жестко
иначе любой лох просканировавший порты довольно скоро начнет тыкаться в твой Постгрес. Впрочем если все настраивалось по уму - там много не нароешь.
Обязательно прежде чем чего-то требовать от ISP прочитай все что написали в pg_hba.conf!
Утверждают возмозжны DoS-атаки IP и проч, ну это уже совсем другая история.
Кстати в конфиге постгреса порт можно явно указать,
но это может породить проблемы с приложениями
страшно ленивых программеров забывших оставить пользователю
возможность сменить порт. PostgreSQl Manager умел явно задавать
порт - думаю pgutilites тоже способны.
Carolyne
Дата: 20.02.2004 16:10:04
все! заработало! даже вещи типа
nextval('firms_firm_id_seq'::text)

прописываешь их в экселевской таблице и все... красатишша! ща бум платить 210 бакинских за фсё щщщщастье :)
принимаю поздравления с избавлением от гемора ;)