Есть необходимость объединения нескольких баз данных (11) в одну. Все бд находятся на разных серверах разбросанных по России.
Во-первых не могу принять решение каким образом передавать данные (Почта, ftp, еще что-нибудь?)
Второе из каждой из баз нужно достать только одну табличку. Но дело в том, что у нас в каждой базе в табличках есть одинаковые поля с одинаковыми значениями их ни в коем случае нельзя удалять. можно переименовать.
Система работает следующим образом.
Есть центр например Икея.
В нем стоят датчики, которые отправляют числовые данные в базу. У каждой датчика в базе есть свой id. logentid. Таких центров много и эти поля везде похожи. но названия датчиков разные.
Пример:
1) Центр 1 Датчик 1 - id 10 - logentid 1212 - показания датчика 12
2) Центр 2 Датчик 1 - id 10 - logentid 1542 - показания датчика 11
3) Центр 3 Датчик 1 - id 11 - logentid 1212 - показания датчика 18
и т.д.
Проблема в том, что id и Logentid могу совпадать и тогда начнется огромная путаница. т.к. данные будут приписываться к другим датчикам.
Нужно сделать что-то типа такого:
Программа считала данные с датчика, записала в БД.
Из БД запросом выгрузили данные в файл.
Файл отправили на центральный сервер (Почта, ftp, ....)
Там этот файл закинули в центральную базу.
Вопрос 1: как же вы умудрились забыть о том, что датчику нужно еще и object_id? Это же эелементарно, Ватсон, и при этом решило бы вашу проблему с синхронизацией данных из разных объектов. Если есть возможность, то лучше ввести соответствующие правки в прилоение.
Вопрос 2: суть вашего вопроса сводится к одноразовому вытаскиванию данных или работе по расписанию (периодически)?
1) к сожалению,проблема в том, что сама СУБД очень большая и состоит из порядка 100 табличек. (Шведы постарались). и если я сейчас начну присваивать object_id то и мне во всех других табличках придется все переделывать.... + к этому придется переделывать сам отчет для клиента. а это нужно хорошее знание Crystal Report, а у меня знания такого нет.
2) Периодически. желательно раз в день. но можно и раз в месяц.
В таком случае лучшим вариантом для вас было бы (при отсутствия возможности реплицировать данные с объектов) собирать их напрямую SQL-запросом с коллекора, тем самым вы хотя бы на стороне коллектора сможете с известной степенью удобства отличать данные одного объекта от данных другого. В центральной базе (на коллекторе) вы можете ввести одно поле (object_id). Это если рассматривать размещение данных в одной таблице коллектора.
Есть и другой вариант - собирать данные удаленных объектов в разные таблицы коллектора.
Понимаете в чем дело... Есть добавлять object_id то придется переделывать сам отчет, что бы он понимал что к чему относится... А как я писал раньше, Crystal Report я знаю только базовые функции.
If you right click on a blank spot on your report, you will get a popup menu. Select Database -> Verify__Database. Crystal Reports should update the fields that have changed.
You can drag-n-drop the new field onto your report.
There should be a "Field Explorer" tree view (probably on the left). Select Database Fields -> View/Table Name -> Field Name and drag that onto your report.
нет, нет, нет))) Все не совсем так просто. Это-то я могу сделать
У нас просто клиенты через веб морду "запросы" отправляют.
То есть у них там у них
Дневной. недельный, месячный и годовой отчет. и там они период выбирают и датчики и еще несколько параметров. и что бы это изменить надо хорошее знание по этой программе иметь. Я книжку читал и делал по примерам. и у меня много чего не получалось. вот сижу уже месяц 3 наверно изучаю....
Если у Вас MS SQL Server, то посмотрите в сторону SQL Server Integration Services.
В свое время делал на нем сбор данных с большого количества баз Access в одну MS SQL, попутно причесывая данные, добавляя необходимые поля и прочие плюшки.