`dbase-parser`: A dbaseIII/IV/foxpro iterative parser for rust ======================================================== This crate provides the ability to read and parse `dbf` files, yielding typed objects as it goes. It is efficient, versatile, well-tested and, above all, maintained. The motivation behind this is documented [here](https://stackoverflow.com/a/57769207/2167834). In particular, no parsing crate supported the memo (`M`) type, let alone the two variants of it. [![Build Status](https://travis-ci.org/srenauld/dbase.svg?branch=master)](https://travis-ci.org/srenauld/dbase) [![Coverage Status](https://coveralls.io/repos/github/srenauld/dbase/badge.svg?branch=coveralls-fix)](https://coveralls.io/github/srenauld/dbase?branch=coveralls-fix) # A disclaimer on versioning As the crate is still under active development, versions may change relatively fast. Until we're at 1.x, consider the public API to be unstable. In particular, the `FieldValue` enum may gain additional types as different DBF file formats surface. # Installation Add `dbase_parser` to your dependencies. # Usage Opening a file and streaming rows is a simple set of operations, as shown below: extern crate dbase_parser; use dbase_parser::{FieldValue, open}; let dbase_file = open("data.dbf"); let amount:f64 = dbase_file .map(|db| { db.into_iter().fold(0.0, |current, record| { record.get("amount").map(|value| match value { FieldValue::Numeric(value) => value.clone(), _ => 0.0 }).unwrap_or(0.0) }) }).unwrap_or(0.0); More options and types are available under the hood and exposed through the documentation. # Bugs If you've found a bug or issue, don't hesitate to file an issue. If you are parsing a file, don't forget to attach it to your issue; make sure to anonymize the data if needed. ## License Licensed under either of * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) at your option. ## Contribution Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.