Софт

объединение баз данных

Рейтинг: 4.0/5.0 (247 проголосовавших)

Категория: Windows

Описание

Объединение данных двух баз

Объединение данных двух баз [new]

Откуда:
Сообщений: 77

Кто-нибудь сталкивался с задачей по объединению данных из двух баз в единую базу данных?
Есть две базы одинаковые по структуре, но с разными данными в таблицах. Нужно создать третью, в которую будут собираться данные из первой и второй баз.
Пробовал воспользоваться репликацией и реализовать топологию с центральным подписчиком (как раз это мне и нужно - 2 издателя передают данные через распространитель на 1 подписчик). Но что-то пока не успешно:
Репликацию моментальных снимков не рассматривал. Репликация транзакций не подошла потому-что там нет механизма решения конфликтов данных. Например, был следующий сбой: Я настроил две базы данных в качестве издателей и в качестве их подписчиков указал одну и ту же результирующую базу. Затем добавил в таблицу первой базы строку: id = 7, name = Vasya, а в эту же таблицу второй базы: id = 7, Name = Petya. Строка с name = Vasya реплицировалась на подписчик, а с Petya - нет, монитор репликации показал сбой: Cannot insert duplicate key in object. А хотелось бы видеть в новой базе и Васю, и Петю.
С помощью репликации слиянием тоже не получилось реализовать топологию с центральным подписчиком. После создания по описанной выше схеме второго подписчика, столкнулся с ошибкой в мониторе репликации: The subscription could not be initialized using an initial snapshot because one or more tables in the subscription belong to another publication, and therefore cannot be dropped.
И предлагается настроить подписчика вручную без создания моментального снимка издателя. Стоит ли двигаться в этом направлении. Или при решении конфликта с Петей и Васей, арбитр конфликтов в начале реплицирует строку с Васей, а потом заменит её на строку с Петей? В итоге мне нужны две строки на подписчике: id = 1, Name = Vasya и id = 2, Name = Petya.
Может как-нибудь использовать автоинкремент на первичный ключ?
Если кто-нибудь встречался с подобного рода задачей, то буду очень признателен, если напишите как реализовать такую идею.

Re: Объединение данных двух баз [new]

Откуда: Москва / Калуга
Сообщений: 27910
Блог

попробуйте в схему консолидации данных ввести id базы

Re: Объединение данных двух баз [new]

Откуда:
Сообщений: 77

Уточните пожалуйста как это сделать.
На сколько я знаю, с консолидацией данных связано применение итоговых функций ( sum(), avg(), итд) и различных группировок.
Про объединение данных их двух баз в третью с помощью консолидации, я ничего не нашёл.

Re: Объединение данных двух баз [new]

Откуда:
Сообщений: 8461

вообще говоря, для решения подобного рода конфликтов есть совершенно стандартные методы, самый простой из которых - разделение диапазонов идентификаторов. Либо можно сделать как рекомендует Критик: ввести составной идентификатор, добавив поле ID_Base, которое в первой базе всегда будет 1, во второй - 2, и т.п. в общей базе соответственно они не будут пересекаться. Либо можно использовать для идентификаторов UID.

Re: Объединение данных двух баз [new]

Откуда:
Сообщений: 77

Спасибо.
Разделение идентификаторов с помощью DBCC CHECKIDENT помогло. На одном издателе сделал, чтобы идентификаторы начинались с 1, на другом с 10000. Надо бы попробовать лучше инкремент сделать равным двум и задать идентификаторы у одного подписчика с 1, а у другого - с 2, чтобы точно не пересекались. Это что касается репликации транзакций.
Не совсем правда устраивает такой вариант, потому-что не хотелось бы только ради этого задавать свойство IDENT для первичного ключа и менять значения идентификаторов, поступающих в таблицу.
Также проблема решилась после того как сделал первичным ключом поле rowguid вместо поля ID и установил свойство Automatically manage identity range = Automatic для реплицируемой статьи, при использовании репликации слиянием или репликации транзакций с обновлением подписчиков.
Но опять же с добавлением нового поля rowguid изменилась структура таблиц. А это нужно избежать.
Попробую для этого сделать дополнительную публикацию-посредника.

Re: Объединение данных двух баз [new]

Откуда:
Сообщений: 77

с ID_Base - неплохой вариант. Но опять же надо структуру баз меня, добавляя к таблицам новое поле. Или опять же это можно реализовать через дополнительную публикацию.

объединение баз данных:

  • скачать
  • скачать
  • Другие статьи, обзоры программ, новости

    Объединение баз данных

    10.3.2. Набор символов и объединение базы данных

    Каждая база данных имеет набор символов и объединение базы данных. Инструкции CREATE DATABASE и ALTER DATABASE имеет факультативные предложения для определения набора символов базы данных и объединения:

    CREATE DATABASE db_name

    [[DEFAULT] CHARACTER SET charset_name ]

    [[DEFAULT] COLLATE collation_name ]

    ALTER DATABASE db_name

    [[DEFAULT] CHARACTER SET charset_name ]

    [[DEFAULT] COLLATE collation_name ]

    Ключевое слово SCHEMA может использоваться вместо DATABASE.

    Все параметры базы данных сохранены в текстовом файле db.opt, который может быть найден в каталоге баз данных.

    Предложения CHARACTER SET и COLLATE делают возможным создать базы данных с различными наборами символов и объединениями на том же самом сервере MySQL.

    CREATE DATABASE db_name CHARACTER SET latin1

    MySQL выбирает набор символов и объединение базы данных следующим способом:

    Если CHARACTER SET X и COLLATE Y были определены, то используются набор символов X и объединение Y .

    Если CHARACTER SET X указан без COLLATE, то применяется набор символов X и заданное по умолчанию объединение для него.

    Если COLLATE Y был определен без CHARACTER SET, то используются набор символов, связанный с Y. и объединение Y .

    Иначе, применяется набор символов и объединение сервера.

    Набор символов базы данных и объединение используется как значения по умолчанию, если набор символов таблицы и объединение не определен в инструкции CREATE TABLE. Они не имеют никакой другой цели.

    Набор символов и объединение для заданной по умолчанию базы данных может быть определено из значений переменных системы character_set_database и collation_database. Сервер устанавливает эти переменные всякий раз, когда заданная по умолчанию база данных изменяется. Если не имеется никакой заданной по умолчанию базы данных, переменные имеют то же самое значение, что и соответствующие переменные системы уровня сервера: character_set_server и collation_server.

    Объединение двух баз - MS Access

    Объединение двух баз - MS Access

    Всем доброго времени суток. С Access познакомился недавно, только только начинаю его познавать и возникла проблема, решение которой я найти пока не смог.
    Ситуация следующая: есть две базы данных Acceess. Абсолютно идентичны, но одна БД 2010г, а вторая БД 2011г. Надо из них сделать одну 2010-2011гг) в БД 15 таблиц и только 5 (включая главную таблицу, к которой идут почти все связи) из них с другими (или частично другими) данными, все таблицы связанны.
    И от сюда вопрос: как их грамотно соединить, что бы ничего не потерялось по дороге?)

    41792 / 34177 / 6122

    03.05.2012, 23:52 Объединение двух баз

    После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.

    04.05.2012, 08:52 Объединение двух баз

    Может проще из 2011 работать с данными 2010, ничего не объединяя?

    04.05.2012, 09:05 [ТС] Объединение двух баз

    Может проще из 2011 работать с данными 2010, ничего не объединяя?

    может быть оно и проще. пока что. но в будущем будут появляться БД 2012, 2013, 2014. и тд. БД ведется каждый год текущая, а старая отправляется в архив и не удобно будет потом что-нибудь искать или делать анализ.

    04.05.2012, 09:19 Объединение двух баз

    Присоединяете к "Аналитической базе" через ODBC базы прошлых лет и анализируйте.
    Еще можно создать запросы в архивных базах на создание таблиц с данными необходимыми для анализа и уже подключать эти таблицы?

    04.05.2012, 09:38 [ТС] Объединение двух баз

    Присоединяете к "Аналитической базе" через ODBC базы прошлых лет и анализируйте.
    Еще можно создать запросы в архивных базах на создание таблиц с данными необходимыми для анализа и уже подключать эти таблицы?

    Не вариант..и так много запросов, форм. и все это присоединять и связывать..нужно именно объединить, что бы все данные цельно лежали в своих таблицах.

    Ситуация следующая: есть две базы данных Acceess. Абсолютно идентичны, но одна БД 2010г, а вторая БД 2011г. Надо из них сделать одну 2010-2011гг) в БД 15 таблиц и только 5 (включая главную таблицу, к которой идут почти все связи) из них с другими (или частично другими) данными, все таблицы связанны.
    И от сюда вопрос: как их грамотно соединить, что бы ничего не потерялось по дороге?)

    Решение хранить данные раздельно по годам НЕ базовое. Ексельное, вордовское и т.п. Но не бдшное.
    В БД хранят ВСЕ данные, относящиеся к процессу/объекту. Это следует из самого названия. Очевидный выход слить все данные, по всем годам, в одну базу. В таблицах добавить поле года, которое будет основой для выбора данных по году.
    И вы избавитесь от множества морок, которые неизбежно будут валиться на вашу голову при нынешнем подходе.

    Интересные уроки по теме сайтостроения для бизнеса

    Хотите быстро изучить JavaScript и jQuery?

    Предлагаю использовать самый эффективный и современный метод обучения - видеокурс .

    За счет получения информации сразу по двум каналам (зрение и слух) эффективность обучения значительно превосходит обучение по книгам. А домашние задания и онлайн-тесты позволят вам постоянно думать на изучаемом языке и сразу проверять свои знания!

    Более 100 видеоуроков на одном DVD.

    Видеокурс "HTML с нуля"

    Если вы давно хотите как следует изучить HTML, то у меня для Вас есть отличная новость!

    Вы можете совершенно бесплатно получить полноценный курс по HTML из моего платного сборника. 33 видеоурока от Евгения Попова!

    Видеокурс "CSS с нуля"

    Если вы уже изучили HTML и хотите двигаться дальше, то следующим шагом будет изучение технологии CSS.

    Так же, как и в случае с HTML, вы можете совершенно бесплатно получить полноценный курс по СSS из моего платного сборника. Вас ждет 45 подробных видеоуроков от Евгения Попова!

    Видеокурс "Домен и хостинг"

    Если вы хотите разобраться с понятиями домена и хостинга, научиться создавать базы данных, закачивать файлы сайта на сервер по FTP, создавать поддомены, настраивать почтовые ящики для своего сайта и следить за его посещаемостью, то этот курс создан специально для вас!

    Получать новые уроки на E-mail:

    Cоединение двух баз данных в одну SQL server -> Форум на Исходниках

    Здраствуйте.
    Сразу хочу сказать я новичек.
    Помогите пожалуйста разобратся с обьединением базы SQL server 2000.
    Есть такая программа как Ship constructor 2005(на базе Auto cad 2006), она записует базу деталей на SQL server 2000 в файлы с разш. mdf и .ldf

    Что я хочу:
    Открыть файл (.mdf) и с одного файла скопировать необходимые мне параметры (детелей) в другой.
    В моей ситуации часть деталей находится на одном сервере (1 компьютер) часть детелей на втором сервере(2 компьютер).
    Заранее спасибо.

    Сообщ. #2. 10.09.09, 14:06

    Это одноразовая операция?

    Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
    Есть претензии ко мне как к участнику? да ради бога.
    Не нравятся мои ответы? не читайте их.
    В общем, берегите себя. Нервные клетки не восстанавливаются.

    Сообщ. #3. 10.09.09, 14:15

    да (или покрайней мере очень редко)

    Сообщ. #4. 10.09.09, 14:22

    В общем это, конечно, не объединение, а копирование из одной БД в другую. Как я понимаю, структура баз совершенно одинакова.
    Раз это одноразовое действо - я бы подключился Аксессовским проектом к одной БД и экспортировал нужные данные, а затем импортировал бы их во вторую.
    Для беспроблемного импорта нужно будет разобраться в зависимостях таблиц и делать импорт в таком порядке, чтобы не было ошибок отсутствия внешних ключей.

    Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
    Есть претензии ко мне как к участнику? да ради бога.
    Не нравятся мои ответы? не читайте их.
    В общем, берегите себя. Нервные клетки не восстанавливаются.

    Сообщ. #5. 10.09.09, 14:32

    А вы могли бы мне как для чайника обьяснить, что такое (Аксессовским проектом) и где его взять?

    Сообщ. #6. 10.09.09, 14:43

    Есть фирма Майкрософт. Она выпускает среди прочего Майкрософт Офис. В состав проф. версии входит приложение Аксесс. Он умеет создавать базы данных либо проекты. Проект - это фактически визуальный интерфейс к базам данных SQL-сервера.
    То есть надо запустить Аксесс, выбрать "Создать новый проект" (не базу данных!!!), ввести параметры подключения к SQL-серверу, указать рабочую БД. и все данные у тебя перед глазами. Экспорт в любой приемлемый формат (а тебе собсно надо только имена полей прихватить во избежание непоняток) или импорт выполняется обычным запросом, который тебе поможет построить мастер запросов.
    Подробнее - во встроенной справке.

    Есть претензии ко мне как к модератору? читайте Правила, разделы 5 и 6, и действуйте соответственно.
    Есть претензии ко мне как к участнику? да ради бога.
    Не нравятся мои ответы? не читайте их.
    В общем, берегите себя. Нервные клетки не восстанавливаются.

    Сообщ. #7. 11.09.09, 02:18


    Вместе с MS Sql (как минимум с 2000 версией) поставляется утилита по импорту данных dtswiz.exe (в меню Import and Export Data). С ее помощью можно как разово перебросить данные и данные со структурами тае и сформировать DTS пакет для регулярного перебрасывания данных.
    Второй вариант это сформировать руками соответствующий DTS пакет.
    Собственно, это штатные средства сервера для проведения подобных мероприятий по массовому импорту данных из внешних источников.

    Привет всем
    что у меня неполучается
    1. Этого у меня нет (Вместе с MS Sql (как минимум с 2000 версией) поставляется утилита по импорту данных dtswiz.exe (в меню Import and Export Data))
    2. Аксесом я открываю вижу данные одной базы копирую из как (копировать), потом открываю другую базу вставляю строки, а вот когда сохраняю оно сохраняет в какойто другой файл а не в существующий файл базы данных с расширением. mdf.
    3. Еще я пробовал использовать проги db Forge Date Compare for SQL server. там я вижу свои строки но незнаю как перенесть из одно

    Сообщ. #10. 11.09.09, 12:09

    продолжение
    перенести с одной базы в другую
    4. также пробовал прогу Toad for SQL server 4.5 там експортировать строки можно а вот импортировать пишет нет лицензии. Может у когото есть прога чтобы были лицензии на импорт, ей я думаю получится
    Может ктото знает другую прогу или научит пользоватся Аксесом 2003
    Заранее спасибо

    Сообщ. #11. 11.09.09, 12:16


    AYM910
    Так доставь из инсталяшки клиента, проблем то.

    Сообщ. #12. 08.10.09, 19:15

    Пишу для AYM910

    посмотри в Toad for Data Analyst (тоже от Quest Software, может коннектиться и к SQL Server и к MS Access, да вообще ко всему может) есть там data compare: tools-> compare -> data compare
    может сравнивать две базы данных по-таблично и генерировать скрипт на синхронизацию (т.е. переносить построчно данные).
    думаю, поможет.

    Сообщ. #13. 09.10.09, 04:58


    в 2000 сервере - тыкаешь на базе правой кнокпой, далее в менюшке где то (нужно походить, не помню где точно) есть такая хреть:
    "Экспорт. "
    "Импорт. "
    собственно, они то тебе и нужны. можно перекинуть данные откуда угодно или куда угодно.
    в 2000 сервере это называется DTS, можешь поискать в документации.
    есть хороший сайтец: http://www.sqldts.com/, но он уже в основном не про DTS, а про его приемников.

    Opinions are like assholes, everyone's got one.

    Цитата AYM910 @ 10.09.09, 11:57

    SQL server 2000 в файлы с разш. mdf и .ldf


    ЭТО НЕЛЬЗЯ ОБЪЕДИНЯТЬ
    Это файл базы данных и лога. 1 БД в 2-х файлах

    Если 2 БД на разных серверах
    на сервере 1 добавляем DTS пакет по импорту данных с сервера 2.
    при необходимости переноса данных исполняем пакет

    Добавлено 13.10.09, 08:47
    в меню сервера пакет можно создать утилитой "Import and Export Data" (Microsoft SQL Server\80\Tools\Binn\dtswiz.exe)

    Сообщение отредактировано: Paul_K - 13.10.09, 08:50

    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)

    [ Script Execution time: 0,1671 ] [ 16 queries used ] [ Generated: 24.08.16, 02:10 GMT ]

    Объединение баз Firebird - Stack Overflow на русском

    Есть 3 одинаковых базы с разными данными, велись локально на трех клиентских ПК. Юзеры взрослели и вмести с ними тучнели базы, ходили в отпуска и при принятии временных обязанностей скакали между клиентскими местами, и захотелось им комфорта - с одного рабочего места видеть все изменения вносимые непосильным трудом в определенную базу.

    и.
    и стала сеть
    и был выделен ПК под db сервер
    и.

    А как объединить данные из 2,3,etc. в одну общую базу? База в firebird, может есть howto?

    Насколько я понял, есть три идентичные по структуре (таблицы и т.д) БД Firebird, но с разным наполнением. Объединить их простым Backup/Restore не получится по причине дублирования первичных ключей в соответствующих таблицах.

    Самое простое это написать отдельную программку для переливки таблиц БД или использовать внешние таблицы-файлы. В первом случае в програмке по три раза вызывались бы запросы вида select * from table1 для исходной БД и insert для общей БД. Во втором -создаем внешнюю таблицу, аналогичную переносимой и далее select/insert from.

    Но. скорее всего во всех трёх БД: 1. есть некоторые таблицы "классификаторов" данные которых общие для всех БД или различаются только незначительно (их надо загрузить в первую очередь а различия добавить с новыми id) 2. "справочники", таблицы в которых содержится, скорее всего, только различные данные (например, клиенты, пользователи и т.д.).Такие таблицы загружаем во вторую очередь. И учитываем, что они (id)скорее всего зависят только от "классификаторов" 3. различные "связки" - загружаем их в третью очередь.

    По поводу id: - Во всех таблицах общей БД необходимо создать новые поля id_old и id_dubl, в одно будем грузить старое значение id, а другое будет указывать на базовое значение, если строка это повтор (дубль). - Все записи из трёх БД можно прогрузить с новыми id (сгенерённым по триггеру) и загрузкой старого id в поле id_old - Заменить все "связи" на новые id. (на этом этапе БД уже рабочая, даже можно включить "ограничения") - Заняться долгим процесов "чистки БД" от дубликатов. (Дубликат удаляется в три этапа: 1-в поле id_dubl ставится id той записи дублем которого он является, 2- все ссылки из других таблиц на этот id заменяются на значение id_dubl 3- дубликат можно удалить)

    ответ дан 27 мар '12 в 7:48

    Объединение нескольких БД в одну

    Объединение нескольких БД в одну

    1) к сожалению,проблема в том, что сама СУБД очень большая и состоит из порядка 100 табличек. (Шведы постарались). и если я сейчас начну присваивать object_id то и мне во всех других табличках придется все переделывать. + к этому придется переделывать сам отчет для клиента. а это нужно хорошее знание Crystal Report, а у меня знания такого нет.

    2) Периодически. желательно раз в день. но можно и раз в месяц.

    В таком случае лучшим вариантом для вас было бы (при отсутствия возможности реплицировать данные с объектов) собирать их напрямую SQL-запросом с коллекора, тем самым вы хотя бы на стороне коллектора сможете с известной степенью удобства отличать данные одного объекта от данных другого. В центральной базе (на коллекторе) вы можете ввести одно поле (object_id). Это если рассматривать размещение данных в одной таблице коллектора.

    Есть и другой вариант - собирать данные удаленных объектов в разные таблицы коллектора.

    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.

    Добавить поле в отчет не так уж и сложно ;) Открыть отчет в редакторе и добавить поле одним из описанных выше способов!

    Самым правильным будет обавление object_id хотя бы на коллекторе.

    Объединение баз данных - это

    объединение баз данных это: Смотреть что такое "объединение баз данных" в других словарях:

    Обработка персональных данных —   любое действие (операция) или совокупность действий (операций), совершаемых с использованием средств автоматизации или без использования таких средств с персональными данными, включая сбор, запись, систематизацию, накопление, хранение,… … Википедия

    БАНК ДАННЫХ — совокупность базы данных с соответствующей системой управления базами данных (СУБД). База данных централизованное хранилище в ЭВМ определенным образом организованной информации. СУБД специальный комплекс программ, осуществляющий функции создания… … Российская социологическая энциклопедия

    Интеграция данных — включает объединение данных, находящихся в различных источниках и предоставление данных пользователям в унифицированном виде. Этот процесс становится существенным как в коммерческих задачах (когда двум похожим компаниям необходимо объединить их… … Википедия

    Структура данных — Бинарное дерево, простой пример ветвящейся связной структуры данных. Структура данных (англ. data structure)  программная единица, позволяющая хран … Википедия

    Реляционная модель данных — разработанная Э.Коддом в 1970г. логическая модель данных, описывающая: структуры данных в виде (изменяющихся во времени) наборов отношений; теоретико множественные операции над данными: объединение, пересечение, разность и декартово произведение; … Финансовый словарь

    Древо Жизни (программа) — У этого термина существуют и другие значения, см. Древо жизни (значения). Древо Жизни … Википедия

    Древо жизни (программа) — Древо Жизни Внешний вид программы Тип Генеалогическая программа Разработчик Genery Software … Википедия

    система — 4.48 система (system): Комбинация взаимодействующих элементов, организованных для достижения одной или нескольких поставленных целей. Примечание 1 Система может рассматриваться как продукт или предоставляемые им услуги. Примечание 2 На практике… … Словарь-справочник терминов нормативно-технической документации

    Дескрипционная логика — Описательные логики[1] или дескрипционные логики[2][источник не указан 861 день](сокр. ДЛ, англ. description logics, иногда используется неточный перевод: дескриптивные логики)  семейство языков представления знаний … Википедия

    Институт автоматики и вычислительной техники МЭИ — Институт автоматики и вычислительной техники Московского энергетического института (технического университета) … Википедия

    Delphi (среда разработки) — У этого термина существуют и другие значения, см. Delphi. Embarcadero Delphi … Википедия

    Книги
    • SQLза 10 минут. Форта Бен. В книге SQL за 10 минут предлагаются простые и практичные решения для тех, кто хочет быстро получить результат. Проработав все 22 урока, на каждый из которых придется затратить не более 10… Подробнее Купить за 977 руб
    • Проектирование серверной инфраструктуры баз данных Microsoft SQL Server 2005 (+CD). Хотек Майк, Макин Дж. К. Эта книга - практическое руководство по проектированию инфраструктуры сервера баз данных с использованием Microsoft SQL Server 2005. В ней подробно описаны разработка политики безопасности… Подробнее Купить за 538 руб
    • Нечеткое моделирование и управление. Пегат А. Дается развернутое введение в проблемы нечеткого и нейронечеткого моделирования применительно к задаче управления системами. Материал основан на новейших результатах в данной… Подробнее Купить за 495 руб
    Другие книги по запросу «объединение баз данных» >>