#csv-reader #csv #batch #json #reader-writer #data-processing #json-file

spring-batch-rs

构建企业级批处理应用程序的工具包

3个不稳定版本

0.2.1 2024年4月2日
0.2.0 2024年1月31日
0.1.5 2024年1月10日
0.1.1 2023年12月22日
0.1.0 2023年4月15日

#2 in #csv-reader

Download history 3/week @ 2024-05-20 95/week @ 2024-07-29

95 每月下载量

MIT/Apache

91KB
1.5K SLoC

Spring-Batch for Rust

🐞 构建企业级批处理应用程序的工具包

crate docs build status Discord chat CodeCov license

Spring-Batch for Rust

Spring Batch for Rust提供了强大的灵活框架,用于开发批处理应用程序,解决高效且可靠地处理大规模数据任务的挑战。它为开发者提供了构建企业级批处理应用程序的全面工具包。

特性

特性 描述
mongodb 启用Mongodb数据库的读取器和写入器
rdbc-postgres 启用Postgres数据库的rdbc读取器和写入器
rdbc-mysql 启用Mysql和MariaDb数据库的rdbc读取器和写入器
rdbc-sqlite 启用Sqlite数据库的rdbc读取器和写入器
json 启用json读取器和写入器
csv 启用csv读取器和写入器
fake 启用fake读取器。用于生成假数据集
logger 启用logger写入器。用于调试

路线图

  • XML读取器和写入器
  • 过滤项目
  • Kafka读取器和写入器
  • Pulsar读取器和写入器
  • 重试/跳过策略
  • 将执行数据保存到数据库

入门

确保在Cargo.toml上激活了合适的特性crate

[dependencies]
spring-batch-rs = { version = "<version>", features = ["<full|json|csv|fake|logger>"] }

然后在main.rs中

fn main() -> Result<(), BatchError> {
    let csv = "year,make,model,description
   1948,Porsche,356,Luxury sports car
   1995,Peugeot,205,City car
   2021,Mazda,CX-30,SUV Compact
   1967,Ford,Mustang fastback 1967,American car";

    let reader = CsvItemReaderBuilder::new()
        .delimiter(b',')
        .has_headers(true)
        .from_reader(csv.as_bytes());

    let processor = UpperCaseProcessor::default();

    let writer = JsonItemWriterBuilder::new().from_path(temp_dir().join("cars.json"));

    let step: Step<Car, Car> = StepBuilder::new()
        .reader(&reader) // set csv reader
        .writer(&writer) // set json writer
        .processor(&processor) // set upper case processor
        .chunk(2) // set commit interval
        .skip_limit(2) // set fault tolerance
        .build();

    let job = JobBuilder::new().start(Box::new(&step)).build();
    let result = job.run();

    assert!(result.is_ok());
    assert!(step.get_status() == StepStatus::Success);

    Ok(())
}

示例

许可证

根据您的选择,许可为以下之一

贡献

除非您明确声明,否则根据Apache-2.0许可定义的您有意提交的任何贡献,均应以上述双许可方式授权,不附加任何额外条款或条件

依赖项

~4-23MB
~345K SLoC