185 похожих чатов

Всем доброе утро. Не мог бы кто-нибудь подсказать по такому

вопросу: есть две БД - рабочая и новая. Новая отличается от рабочей только тем, что в ней присутствует одно дополнительное поле в одной из таблиц и нет никаких данных, в остальном всё идентично. Нужно взять все данные из старой БД и переместить в новую. Как лучше правильно организовать передачу данных (мне пришла в голову идея использовать traverse_backup)? И как правильно "достучаться" из текущего узла до другой БД (она просто в виде копии лежит на диске)?

21 ответов

14 просмотров

делай сырой запрос в старую базу на вычитывание всего множества и сохраняй в хорошо организованном подключении к новой базе

Развернуть бэкап и потом добавить поле было бы куда проще

Δημήτηρ- Автор вопроса
Sergei
Развернуть бэкап и потом добавить поле было бы куд...

Было бы проще, если бы механизм создания полей был стандартный, а тут сделано через erlsom (XML)

Δημήτηρ- Автор вопроса
john conor 
делай сырой запрос в старую базу на вычитывание вс...

А как обратиться к новой БД, если у неё нет своей ноды?

Δημήτηρ- Автор вопроса
Δημήτηρ- Автор вопроса
Sergei
Что мешает воспользоваться шеллом/gui?

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

> Как лучше правильно лучше и правильно зависит от требований (граничных условий)

Δημήτηρ- Автор вопроса
Иванов
> Как лучше правильно лучше и правильно зависит...

Ну, у меня их нет пока, кроме того, чтобы это в принципе работало. Под "правильностью" я имел ввиду чтобы это был не совсем уж говнокод с т.з. того, как пишут на Erl)

Δημήτηρ
Ну, у меня их нет пока, кроме того, чтобы это в пр...

что начит "говнокод" ведь вопрос сводится к переносу данных в новое хранилище? (т.е. обновление структуры методом переноса). я так понял раз вопрос возник значит сервис нельзя останавливать?

Δημήτηρ- Автор вопроса

Нет, приложение останавливать можно, во всяком случае сейчас нет такого требования. А весь кейс возник сугубо из-за того, что текущая версия кода, которая при обновлении структуры БД всё генерирует заново, работает очень долго из-за слабости процессора. Подсунуть готовую пустую БД и перенести данные должно быть намного быстрее.

Δημήτηρ- Автор вопроса
Иванов
что начит "говнокод" ведь вопрос сводится к перено...

Ну, да. Весь вопрос: как, будучи внутри одной ноды, вытянуть все данные из БД ноды и записать данные в БД, которая просто лежит рядом на диске. И всё)

Δημήτηρ
Нет, приложение останавливать можно, во всяком слу...

как тебе идейка: - читать из новой - при отсутствии данных - делать запрос в старую - записывать в новую - удалять из старой - удалить старую при опустении - профит

Δημήτηρ- Автор вопроса

ну дык напиши функцию которая поле добавит

Δημήτηρ- Автор вопроса
john conor 
ну дык напиши функцию которая поле добавит

Для этого пришлось бы XML парсить, что противоречит самой идее использовать генерацию на основе XML)

Δημήτηρ- Автор вопроса
john conor 
делай сырой запрос в старую базу на вычитывание вс...

Раскройте секрет: как? Я попробовал уже вариантов 5 точно, ни один из них не позволяет просто прочитать все записи без фильтра, даже код из книжки Армстронга

Δημήτηρ- Автор вопроса
Δημήτηρ
Раскройте секрет: как? Я попробовал уже вариантов ...

Если кому интересно, то вот один из рабочих вариантов: read_data() -> TabNames = mnesia:system_info(tables), SelectAll = fun(Tables, Records) -> Handle = fun(_, [], Recs) -> Recs; (Fun, Tabs, Recs) -> [First | Rest] = Tabs, New = mnesia:dirty_select(First, [{'_', [], ['$_']}]), Fun(Fun, Rest, [New | Recs]) end, Handle(Handle, Tables, Records) end, Data = SelectAll(TabNames, []), Data.

Похожие вопросы

Обсуждают сегодня

Сообщение* в закодированном виде. То есть, просто сделать sendMessage?text=Привет бла-бла! не получится, надо в HEX переводить, и добавлять процент, типа такого: sendMessage?t...
КТ315
21
А случайно нет ли в паскале штатной возможности передать указатель и количество туда где array of в качестве аргумента?
zamtmn
25
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
58
Хм. А телеграм апи работают через HTTP?
The Bird of Hermes
14
Почему Telegram пишет, что объект media не найден, хотя на самом деле я его передаю? Делаю на urllib, без зависимостей, так надо. Вызываю метод sendMediaGroup с таким JSON: ...
Alexey S
1
Ну раз я пока тут, задам пару глупых вопросов. Зачем писать на ассемблере если компилятор довольно умный, а ассемблер много времени занимает? В каких прикладных задачах сейчас...
Максим Рябцев
20
Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Карта сайта