13
A
回答
0
-module(test).
-compile(export_all).
-record(tab, {first, second}).
do() ->
mnesia:create_schema([node()]),
mnesia:start(),
mnesia:create_table(tab, [{disc_copies, [node()]}, {attributes, record_info(fields, tab)}]),
mnesia:dirty_write({tab, 1, 2}),
mnesia:dirty_write({tab, a, b}),
mnesia:stop().
change_node('[email protected]') ->
'[email protected]';
change_node('[email protected]') ->
'[email protected]';
change_node(Node) ->
Node.
handle_nodes(Nodes) ->
lists:map(fun(Node) ->
change_node(Node)
end, Nodes -- [[email protected], [email protected]]).
handle_cookie({TS, Node}) ->
{TS, change_node(Node)}.
handle_version_value([]) ->
[];
handle_version_value({'[email protected]', _}) ->
[];
handle_version_value({'[email protected]', _}) ->
[];
handle_version_value({Node, TS}) ->
{change_node(Node), TS}.
handle_version({Key, Value}) ->
{Key, handle_version_value(Value)}.
handle_def(Def) ->
lists:map(fun({Key, Value} = Property) ->
case Key of
ram_copies ->
{Key, handle_nodes(Value)};
disc_copies ->
{Key, handle_nodes(Value)};
disc_only_copies ->
{Key, handle_nodes(Value)};
cookie ->
{Key, handle_cookie(Value)};
version ->
{Key, handle_version(Value)};
_ ->
Property
end
end, Def).
go() ->
{ok, N} = dets:open_file(schema, [{file, "./schema.DAT"},{repair,false}, {keypos, 2}]),
do2(N),
dets:sync(N),
dets:close(N).
do2(N) ->
do2(N, dets:first(N)).
do2(_N, '$end_of_table') ->
ok;
do2(N, Key) ->
io:format("process: ~p~n", [Key]),
[{N, Tab, Def}] = dets:lookup(N, Key),
NewDef = handle_def(Def),
dets:insert(N, {N, Tab, NewDef}),
% file:write_file("schema.txt", io_lib:format("~p~n", [{N, Tab, NewDef}]), [append]),
do2(N, dets:next(N, Key)).
+0
它有助於我的情況 – vinnitu 2010-10-06 07:56:00
相關問題
- 1. 從單表查詢備份恢復mysql
- 2. 從備份恢復MySQL表
- 3. 如何從SQL Server 2005備份中恢復單個表?
- 4. 從備份恢復單個TFS項目
- 5. 如何恢復DNN備份
- 6. 什麼是備份/恢復mnesia數據庫的正確方法?
- 7. Neo4j - 如何從備份數據庫恢復單個查詢?
- 8. 如何從svn hotcopy備份中恢復
- 9. 如何備份和恢復表
- 10. 從Git備份中恢復
- 11. MySQL InnoDB從備份恢復
- 12. 如何從數據庫備份恢復一個表
- 13. 備份和恢復DynamoDb表
- 14. 從備份恢復截斷表
- 15. 備份/恢復到Gmail嗎?
- 16. 如何從使用Heroku PG備份的備份中恢復三個項目?
- 17. Heroku pg:備份:從public_url恢復。未找到備份。
- 18. 恢復備份mysql
- 19. Laravel恢復備份
- 20. 恢復Vim備份
- 21. iPhone何時從備份恢復數據
- 22. 將備份表中的行恢復到另一個表中。
- 23. 應用程序從備份中恢復時如何檢測到?
- 24. mysql:從備份中恢復列的值
- 25. SQL備份和恢復完整備份
- 26. Oracle備份和恢復的表空間
- 27. 恢復舊的MySQL備份
- 28. MySQL的備份和恢復
- 29. 如何從mysql備份恢復一個slave?
- 30. 恢復PostgreSQL的9.1備份到8.1
我通過操作schema.DAT解決了我的麻煩。我用dets模塊打開它並做一些替換。這是從節點到節點進行遷移的最快方式。 – vinnitu 2010-09-23 13:05:18
你能發表一個答案並接受它嗎?這個問題有足夠的upvotes,我不想刪除它,但它可能不應該顯示在未答覆的列表。謝謝。 – 2010-10-01 16:35:00