使用scalikejdbc流式传输大表

时间:2018-12-05 15:11:44

标签: postgresql scala scalikejdbc

我有一个查询,该查询返回大量数据,我想使用获取大小将这些数据从postgres流到scala。我的代码看起来像这样

  override def getFilteredData(filters: Seq[Filter]): StreamReadySQL[myObject] =  {
      sql"""  QUERY
        """.stripMargin
           .fetchSize(2000)
           .map(MyObject(_))
           .iterator()
  }

在其他班上我这样称呼它

  val productPublisher: DatabasePublisher[RuleData] = {
    DB readOnlyStream {
      repositories.productRepository.getFilteredData(trigger.filters)
    }
  }

  Source.fromPublisher(publisher).mapAsync(Parallelism) { batch =>
    //do something
    Future.successful(().asRight[ApplicationError])
  }.runWith(Sink.head[Either[ApplicationError, Unit]])

使用此代码,上面的源将仅返回最后n个提取的条目,如何从流中获取可以迭代所有数据的迭代器?

0 个答案:

没有答案