回到主页

scala数据导出

· scala

数据导出用到的地方非常广泛,但是从前端导出数据非常繁琐。由于多数的数据处理都在后台进行,从后台处理完直接导出更加便捷灵活。而用Scala写的后台已经有套比较完整便捷的导出方法,更加精简。这里也有很多注意点。让以后每次用到时候可以及时避开。

从顺序上说,

  1. SBT文件中需要先引入。
  2. 导出需要先的定义各种变量,并进行初始化:val home: File = environment.rootPath val fileCache = new File(home, "file_cache") actorSystem.scheduler.scheduleOnce(5.second) { // init println(environment.rootPath.getAbsolutePath) initCache() } appLifecycle.addStopHook { () => cleanDirectory(fileCache, rmSelf = false) Future.successful(()) } def initCache(): Unit = { if (!fileCache.exists()) { fileCache.mkdir() } } 
  3. exportWriter.write(pub)中 初始化后的exportWriter,和需要处理的数据集合(pub)处理时需要对比仔细,尤其是数多的时候, 数据类型必须完全一致,不然会出错。 
  4. 如果导出的数据需要加列表头可以直接用rfc.withHeader例如: val exportWriter = exportFile.asCsvWriter[(Option[Int], Option[String] )](rfc.withHeader("VIP等级", "会员编号")) 
  5. 如果列表前面要加序号可以使用zipWithIndex方法。例如: val pubs = items.zipWithIndex 原来数组pubs后面加了一个序号。 
  6. 最后测试的时候GET接口拼参数的时候是&号,例如: http://192.168.0.107:9000/spouseStandards/export?offset=0&size=5

其他注意点:传进来的数据不能是OffSetDateTime或者List,都需要经过转化。