Seriële bijlagen
De gemakkelijkste manier is om inserts
te doen binnen een Sink.foreach
.
Ervan uitgaande dat u de schemacodegeneratie hebt gebruikt en verder ervan uitgaande dat uw tabel "NumberTable" heet
//Tables file was auto-generated by the schema code generation
import Tables.{Numbertable, NumbertableRow}
val numberTableDB = Database forConfig "NumberTableConfig"
We kunnen een functie schrijven die de invoeging doet
def insertIntoDb(num : Int) =
numberTableDB run (Numbertable += NumbertableRow(num))
En die functie kan in de gootsteen worden geplaatst
val insertSink = Sink[Int] foreach insertIntoDb
Source(0 to 100) runWith insertSink
Batched bijlagen
Je zou de Sink-methodologie verder kunnen uitbreiden door N inserts tegelijk te batchen:
def batchInsertIntoDb(nums : Seq[Int]) =
numberTableDB run (Numbertable ++= nums.map(NumbertableRow.apply))
val batchInsertSink = Sink[Seq[Int]] foreach batchInsertIntoDb
Deze batched Sink kan worden gevoed door een Flow
wat doet de batchgroepering:
val batchSize = 10
Source(0 to 100).via(Flow[Int].grouped(batchSize))
.runWith(batchInsertSink)