AndroidFlow
@AndroidFlow

Как сделать одну базу данных из другой по шаблону?

Есть БД-1, она доступна по SSH туннелю.
Нужно создать БД-2 по шаблону:
Берем из БД-1 из таблиц items и actions некоторые колонки и создаем из этого таблицу things в БД-2 с этими колонками.
Т.е. берем какие-то данные из БД-1 и делаем из этого БД-2.
Как правильно это сделать? Что использовать?
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 2
@barolina
turn coffee into code
1. Создание клона БД из template0/template1, имеет ряд ограничений ( подключенные сеансы, данные БД): Template Databases
2. Есть способ подписки на wal, используя к примеру pg_sync, но для этого на мастере должна быть включена репликация
3. Размер БД <->доступный размер диска
4. Нагрузка в момент копирования
5. Как мне кажется, самый безопасный вариант, разделить задачу на две:
- сделать бэкап на другой сервер dump bd for large database
- и уже на новой БД, update данных: где, так же, присутствуют свои практики, как быстро - это сделать
- переиндексация данных ( возможно )
Ответ написан
Daemon23RUS
@Daemon23RUS
Хоть бы указали какая база, предположим MySQL тогда в локальной базе делаем MySQL Federated и работаем далее запросами так если бы это было на одном компе
CREATE TABLE federated_table (... структура...) ENGINE=FEDERATED DEFAULT CHARSET=latin1 
      CONNECTION='mysql://root@localhost:9306/federated/test_table';

INSERT INTO table1 (Column1, Column2)
SELECT column1, column2 FROM federated_table;

Ессно надо через SSH пробросить порт удаленной базы и так чтобы не пересекался с локальной и все это указать в строке подключения. И при создании федеративных таблиц структура должна совпадать, ее надо запросить с удаленного сервера
P.S. В комментариях выяснилось что база с основными данными MySQL а создать надо PostgreSQL
Похожий механизм есть и там, называется Foreign Data Wrapper (FDW). Не на много сложнее, чем описано мной выше (установить расширение, создать сервер, сопоставить пользователя и импортировать схемы). И дальше работать в локальной базе с запросами, а данные потянутся с удаленного сервера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы