Erlang中文手册(Erldoc.com)  »  ets  »  tab2file/3
Erlang并发编程 Erlang/OTP设计原理 Erlang/OTP[pdf] Mnesia用户手册[pdf] Erlang完整手册[en] 官网手册[en] 模块列表 方法列表 随机 Erlang中文社区(BBS) 美女图库

ets:tab2file/3

把一个 ETS 表转储到一个文件里

用法:

tab2file(Tab, Filename, Options) -> `ok` | {`error`, Reason}

把表 Tab 转储到文件 Filename。

当转储表时,表的某些信息会在转储开始时存到文件头里。这些信息包括表的类型,名字,访问权限,大小,版本和是否是一个有命名的表。这也包括一些额外加进来的扩展信息,例如在文件里的对象数量、表头和记录的 MD5 校验值。

如果表是 public 类型的表,并且记录在转储的过程中被添加或删除,那么在表头上的 size 大小值也许跟在文件里的实际记录数量不一致。在转储过程中更新 public 类型的表,并且读取的适合希望验证数据,对扩展信息的某个字段的读取验证处理至少是需要的。

Tab = ets:new(test_ets_new, [named_table, ordered_set]),
[ets:insert(Tab, {N, erlang:now()}) || N <- lists:seq(1, 10)],
ets:tab2file(Tab, "./test_ets_tab2file.data", [{extended_info, [object_count]}]).

extended_info 选项参数指定什么额外信息要在转储过程中一同被写进,参数选项有以下值:

  • object_count:被标记在文件尾后的实际被写进文件的对象数量。
  • md5sum:在文件里的文件头数据和对象数据都会用内置的 MD5 函数来效验。所有对象数据的 MD5 校验值会被卸载文件尾,因此读取数据的验证将检测在文件数据里的校验值。

不管参数 extended_info 是否使用,在 stdlib-1.15.1 之前的 ets 版本该参数无效。

Tab = ets:new(test_ets_new, [named_table, ordered_set]),
[ets:insert(Tab, {N, erlang:now()}) || N <- lists:seq(1, 10)],
ets:tab2file(Tab, "./test_ets_tab2file.data", [{extended_info, [md5sum]}]).
阿里云 - 最高1000元通用代金券立即可用
沪ICP备13037221号-9