【问题标题】:How to write CSV file with headers using akka stream alpakka?如何使用 akka 流 alpakka 编写带有标题的 CSV 文件?
【发布时间】:2020-07-09 22:25:36
【问题描述】:

我看不到找到它,因此我转向 slack 询问:有没有办法使用 akka 流 alpakka 编写一个带有其声音的 csv 文件?

我唯一看到的是https://doc.akka.io/docs/alpakka/current/data-transformations/csv.html#csv-formatting

但没有对 csv 进行反向操作以某种方式映射。

我的用例是我需要读取几个 csv 文件,过滤它们的内容,并将干净的内容写入相应的文件 orginalcsvfilename-cleanded.csv。

如果不直接支持,有什么建议吗?

【问题讨论】:

    标签: csv akka-stream alpakka


    【解决方案1】:

    你可以这样做

    def csv_header(elem:T):List[String] = ???
    def csv_line(elem:T):List[String] = ???
    
    def firstTrueIterator(): Iterator[Boolean] = (Iterator single true) ++ (Iterator continually false)
    
    def firstTrueSource: Source[Boolean, _] = Source fromIterator firstTrueIterator
    
    def processData(elem: T, firstRun: Boolean): List[List[String]] = {
          if (firstRun) {
            List(
              csv_header(elem),
              csv_line(elem)
            )
          } else {
            List(csv_line(elem))
          }
        }
    
    val finalSource = source
      .zipWith(firstTrueSource)(processData)
      .mapConcat(identity)
      .via(CsvFormatting.format()) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 2019-09-02
      • 2014-04-16
      • 2020-05-19
      • 2017-07-14
      • 2011-12-31
      • 1970-01-01
      相关资源
      最近更新 更多