Chèn nối tiếp
Cách dễ nhất là thực hiện chèn
trong Sink.foreach
.
Giả sử bạn đã sử dụng tạo mã giản đồ và giả sử bảng của bạn được đặt tên là "NumberTable"
//Tables file was auto-generated by the schema code generation
import Tables.{Numbertable, NumbertableRow}
val numberTableDB = Database forConfig "NumberTableConfig"
Chúng ta có thể viết một hàm thực hiện việc chèn
def insertIntoDb(num : Int) =
numberTableDB run (Numbertable += NumbertableRow(num))
Và chức năng đó có thể được đặt trong Sink
val insertSink = Sink[Int] foreach insertIntoDb
Source(0 to 100) runWith insertSink
Phụ trang theo đợt
Bạn có thể mở rộng thêm phương pháp Sink bằng cách ghép N lần chèn tại một thời điểm:
def batchInsertIntoDb(nums : Seq[Int]) =
numberTableDB run (Numbertable ++= nums.map(NumbertableRow.apply))
val batchInsertSink = Sink[Seq[Int]] foreach batchInsertIntoDb
Chậu rửa theo đợt này có thể được cung cấp bởi một Flow
cái nào thực hiện nhóm hàng loạt:
val batchSize = 10
Source(0 to 100).via(Flow[Int].grouped(batchSize))
.runWith(batchInsertSink)