clojure java.jdbc_clojure java.jdbc 如何批量插入数据库

一般来说可以直接使用insert!函数,比如

(defn insert-rows-fruit

"Insert complete rows"

[db]

(j/insert! db

:fruit

nil ; column names not supplied

[1 "Apple" "red" 59 87]

[2 "Banana" "yellow" 29 92.2]

[3 "Peach" "fuzzy" 139 90.0]

[4 "Orange" "juicy" 89 88.6]))

也可以这样使用:

(defn insert-records-fruit

"Insert records, maps from keys specifying columns to values"

[db]

(j/insert! db

:fruit

{:name "Pomegranate" :appearance "fresh" :cost 585}

{:name "Kiwifruit" :grade 93}))

更多的例子可以看这里

有需要逐条插入的话可以使用doseq

比如

(doseq [to-insert [{:name "Apple" :appearance "rosy" :cost 24}

{:name "Orange" :appearance "round" :cost 49}

{:name "Orange" :appearance "round" :cost 49}]]

(sql/insert-records :fruit to-insert))

你还可以使用zipmap函数,

zipmap函数接受一组键和一组值,返回一个hash-map,相当于

(apply hash-map (apply concat (interleave [:k1 :k2 :k3] [v1 v2 v3])))

所以你可以这样写:

(sql/with-connection mysql-db

(let [coll-to-insert (map (partial zipmap [:name :appearance :cost])

[["Apple" "rosy" 24]

["Orange" "round" 49]

["Orange" "round" 49]

.

.

.

])]

(apply (partial sql/insert-records :fruit) coll-to-insert)))

最后推荐一个东西,叫做korma,官网是http://www.sqlkorma.com,是一个比较方便的sql封装库~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值