erlang mnesia

(1)mnesia数据写入文件

write_db_to_file()->
	Tables = [Table || Table <- mnesia:system_info(tables), string:str(atom_to_list(Table), atom_to_list(?MODULE)) =/= 0],
	Fun = 
		fun(PlayerTable)->
			MatchHead = #loot_gold_db{ _ = '_'},
			Guard = [],
			Result = ['$_'],
			mnesia:select(PlayerTable, [{MatchHead, Guard, Result}])
		end,
	DataList = 
		lists:foldl(fun(Table, Acc)->
			case mnesia:transaction(Fun, [Table]) of
				{aborted, _Reason} ->
					Acc;
				{atomic, []}->
					Acc;
				{atomic, LootGoldDBList}->
					LootGoldDBList ++ Acc
			end
		end, [], Tables),
	filelib:ensure_dir("./temp_db/"),
	case file:open("./temp_db/loot_gold_db" , [write]) of
		{ok, IoDevice}->
			lists:foreach(fun(Data)-> io:format(IoDevice, "~p.~n", [Data]) end, DataList),
			file:close(IoDevice);
		_->
			io:format("==================write_db_to_file_is_error==================~n")
	end.


(2)把文件数据写入mnesia

case file:consult("./temp_db/loot_gold_db") of
		{ok, DataList}->
			lists:foreach(fun(Data)-> save_to_db(Data) end, DataList);
		_->
			io:format("==================write_file_to_db_is_error==================~n")
	end.

mnesia:transform_table


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值