> Erlang中文手册 > tab2file/3 把一个 ETS 表转储到一个文件里

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 

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