erlang - 如何从 mnesia 备份文件中提取数据

标签 erlang mnesia ets

问题陈述

我有一个 mnesia 备份文件,想从中提取值。有 3 个表(为简单起见),Employee、Skills 和 attendance。因此 mnesia 备份文件包含这三个表中的所有数据。

员工表是:

Empid (Key) 
Name
SkillId
AttendanceId

技能表是

SkillId (Key)
Skill Name

考勤表是

Code (Key)
AttendanceId
Percentage

我尝试过的 我用过

ets:foldl(Fetch,OutputFile,Table)

获取:是一个单独的函数,用于遍历获取的记录以产生所需的输出格式。

OutputFile : 它写入这个文件

表:表名

期待

我正在获取带有 AttendanceId 的记录(因为这是关键),因为我只想获取代码。它显示员工信息和考勤 ID。

帮帮我。

最佳答案

mnesia 用户指南中描述了备份和恢复 here .

要读取现有备份而不还原它,请使用 mnesia:traverse_backup/4 .

1> mnesia:backup(backup_file).
ok
2> Fun = fun(BackupItems, Acc) -> {[], []} end.
#Fun<erl_eval.12.90072148>
3> mnesia:traverse_backup(backup_file, mnesia_backup, [], read_only, Fun, []).
{ok,[]}

现在向 Fun 添加一些东西以获得你想要的。

关于erlang - 如何从 mnesia 备份文件中提取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32769690/

相关文章:

erlang - 如果记录变化很快,是否可以保证 mnesia 事件监听器能够获取记录的每个状态?

ejabberd - 如何检查 ejabberd 的 Mnesia 数据库

Erlang ETS 表事件

concurrency - 在 Erlang 中将消息路由到 PID

erlang - 为什么要为不是 named_table 的 ETS 表分配名称?

erlang - 有人在那里使用芝加哥老板吗?

erlang - 在 Erlang 进程中使用映射而不是记录来保存状态有什么优势吗?

erlang - 如何在 Erlang/OTP 中将 datetime() 转换为 timestamp()?

erlang - Erlang服务器与端口连接以向Java应用程序发送和接收Json文件

erlang - erlang中如何匹配子字符串忽略大小写