Mysql
 sql >> Baza danych >  >> RDS >> Mysql

W jaki sposób strumienie reaktywne są używane w Slick do wstawiania danych?

Wstawki szeregowe

Najprostszym sposobem byłoby zrobienie wstawek w Sink.foreach .

Zakładając, że użyłeś generowanie kodu schematu i dalej zakładając, że twoja tabela nosi nazwę „NumberTable”

//Tables file was auto-generated by the schema code generation
import Tables.{Numbertable, NumbertableRow} 

val numberTableDB = Database forConfig "NumberTableConfig"

Możemy napisać funkcję, która wykonuje wstawianie

def insertIntoDb(num : Int) = 
  numberTableDB run (Numbertable += NumbertableRow(num))

I tę funkcję można umieścić w zlewie

val insertSink = Sink[Int] foreach insertIntoDb

Source(0 to 100) runWith insertSink

Wstawki w grupach

Możesz jeszcze bardziej rozszerzyć metodologię Sink, grupując N wstawek naraz:

def batchInsertIntoDb(nums : Seq[Int]) = 
  numberTableDB run (Numbertable ++= nums.map(NumbertableRow.apply))

val batchInsertSink = Sink[Seq[Int]] foreach batchInsertIntoDb

Ten zlew wsadowy może być zasilany przez Flow co robi grupowanie wsadowe:

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. Czy mogę utworzyć dynamiczny plik .htaccess?

  2. MySQL do zastąpienia za pomocą symbolu wieloznacznego

  3. mysqli::query():Nie można pobrać mysqli

  4. Czas przechowywania MySQL - typ danych?

  5. Jak monitorować wiele instancji MySQL działających na tym samym komputerze — porady i wskazówki dotyczące ClusterControl