Перейти к содержанию

Как объединить две базы Firebird 2.1 (.gdb)?


Рекомендуемые сообщения

bazyi_IBExpert.jpgIBExpert, версия 2010.10.08

Есть несколько баз, за разные годы. Структура их почти идентична.

1) Нужно найти запись, которая хранится в одной из этих баз в определенной таблице.

2) А также найти записи в одной базе, которых нет в других.

Можно через SQL-запрос в IBExpert или на Delphi написать, неважно.

Если в одной базе искать - это нетрудно. А если баз несколько? Как быть? Подскажите!!!

базы на другом компе в локальной сети

Ссылка на комментарий

   Как вариант - сделать линки на каждую базу в одной экземпляре и нормально осуществить выборки =) Ну или экспорт/импорт таблиц осуществить, на каждый год по партиции =) Не понятна конечная цель - видимо сделать одну большую базу из кучи за предыдущие года?

Ссылка на комментарий

Можно не большую программу написать на делфи, берешь две базы,циклично записываешь первую во вторую, при этом проверяя записи на повторение, потом убираешь первую вместо нее 3-ю , после 4-ю....

так во 2-й базе соберутся все записи

Ссылка на комментарий

Например:

в базе 2010 таблица X - поля: индекс, ФИО, ..., результат.

в базе 2011 таблица X - поля: индекс, ФИО, старый индекс, ..., результат.

поле индекс - ключевое.

все записи в таблице X с результатом NULL в конце года переносятся копируются в таблицу следующего года. (была запись в 2010 - стала в 2011, в 2010 тоже осталась на месте)

индексы со старого года переносятся в поле старый индекс.

Цель 1: Найти записи, которые потерялись при передаче на следующий год

Цель 2: Найти запись с определенным индексом (индексы в разных годах не пересекаются, так как в него включен номер года)

TolkienDRR, можно поточнее! Я поверхностно знаю базы данных. Что за линки? что за партиции?

Базу создавать мне не надо! Базы большие по размеру, так что создать новую базу будет проблематично, долго и ... неправильно!

Спасибо за помощь!

Ссылка на комментарий
и ... неправильно!
   =D забавно учитывая
Я поверхностно знаю базы данных.

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

Есть несколько баз
ты говоришь?

Если просто в одной бд надо создать новую таблицу для 2011 года то:

Создаешь новую пустую таблицу для 2011 с полями:

индекс - автоинкриментное (счетчик);

такие же полями кроме индекса;

поле для старого индекса.

Далее добавляешь записи из таблицы для 2010.

Одним запросом делается, копать в сторону create table и insert into.

Добавлено спустя 2 минуты:

Vsadnik665

линк - ссылка, партиция - часть таблицы, выделяется по значение какого-либо поля.

Ссылка на комментарий

TolkienDRR, базы с 2007 по 2011 можно считать за одну, если структура одинакова, скажем на 90%???

Таблицу создавать не надо. (или это временная таблица? она удалится потом?) Нужен просто список записей.

ps. английский я понимаю, не понимаю, что значит

сделать линки на каждую базу в одной экземпляре

pps. Я думал как правильно написать

и ... неправильно!
, в итоге выбрал это...
Ссылка на комментарий

   Vsadnik665, если совсем-совсем утрировать, база данных - это набор таблиц. Посему вопрос, у тебя много однотипных таблиц в базе данных или много баз данных с однотипной таблицей?

   Все решается одним скриптом, читать вот это http://www.firebirdsql.org/refdocs/langrefupd21-insert.html

Ссылка на комментарий
Посему вопрос, у тебя много однотипных таблиц в базе данных или много баз данных с однотипной таблицей?
Не пойму к чему вопрос. Однозначного ответа не смог найти. У меня однотипные базы данных, то есть однотипные таблицы в нескольких базах данных.
при добавлении новой записи проверяй есть она в базе или нет
Совсем не то, что нужно.
Все решается одним скриптом, читать вот это http://www.firebirdsql.org/refdocs/langrefupd21-insert.html
А где там указывается, из какой базы данных берется таблица? Значит все-таки нужно создать временную таблицу???

Ничего не понимаю. Мне нужно что наподобие такого:

select * from table1 from Baza2010
inner join table1 from Baza2011 on Baza2010.table1.index=Baza2011.table1.old_index

Ну конечно, from Baza нельзя использовать. Вот я спрашиваю, чем это можно заменить?

TolkienDRR, Если все можно решить одним скриптом, так напиши его. Не парь мне мозги. А я сам его обработаю, изучу, разберусь.

Ссылка на комментарий
А где там указывается, из какой базы данных берется таблица? Значит все-таки нужно создать временную таблицу???
   Почитай немного мат.части по базам данных.

О_о дык, ты мат.часть изучи да разбери, а скрипт ты тупо скопируешь да вставишь. Ничего судя по всему не прочитал из вышепосоветованного...

Ссылка на комментарий

Пожалуйста, войдите, чтобы комментировать

Вы сможете оставить комментарий после входа в



Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...