1个不稳定版本
0.0.1 | 2020年2月8日 |
---|
#4 in #anonymize
120KB
3K SLoC
用Rust编写的MySQL mysqldump流处理器/转换器
这个库基于另一个用于解析SQL的库。我只是拿了这个库,简化了它,并修改和调整了它以解析和实时转换mysqldump文件。
您可以在这里查看Andy Grove的出色工作:https://github.com/andygrove/sqlparser-rs
这个库可以解析MySQL mysqldump文件的BufRead,每当解析器达到列或值时,它将调用一个闭包函数。这将允许您在不首先将整个文件加载到内存中时更改备份的内容。
所做的更改
- 以前的解析器假设已经将所有标记都放入了内存中。这个解析器只解析它需要的部分,因此不需要加载整个文件才能工作。
- 删除了大量代码(大约50%)。因此,删除了许多功能。
- 添加了一些逻辑,以便使用BufRead而不是&str
- 更新了库的一般API,以适应新的用法。
- 添加了大量用于解析具体MySQL类型的逻辑。
- 删除了返回解析代码的功能,因为它不是必需的(为了减少RAM使用而删除)
性能
在我的机器上(i7-9750H,32GB RAM),它解析和转换了4.5GB的mysqldump文件,并将结果存储在一个新文件中,用时4分钟30秒,峰值RAM使用量为100Mb。
依赖关系
~135–315KB