Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Các luồng phản ứng được sử dụng như thế nào trong Slick để chèn dữ liệu

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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Lỗi kết nối - [MySQL] [ODBC 5.3 (w) Driver] Host ‘IP’ không được phép kết nối với máy chủ MySQL này

  2. Laravel xác thực duy nhất nếu id giống nhau

  3. Cảnh báo PHP:Khởi động PHP:Không thể tải thư viện động '/usr/lib/php/20151012/msqli.so'

  4. MaxListariesExceededWarning:Đã phát hiện rò rỉ bộ nhớ EventEmitter có thể xảy ra. 11 câu trả lời lis đã được thêm vào. Sử dụng emitter.setMaxListaries () để tăng giới hạn

  5. Sao lưu và khôi phục đơn giản cho Cơ sở dữ liệu mysql từ Java