如何在 Clojure 中使用 postgresql 进行批处理 jdbc/insert! 和 jdbc/update!



我试图在 Clojure 中进行批量插入和更新,但我遇到了一些问题。

我使用的库是:clojure.java.jdbcpostgresql

互联网上有一些例子,但我无法让它工作,我最终得到了这样的异常:

CompilerException java.sql.BatchUpdateException: Batch entry 0 INSERT INTO人(数据,年龄)值('ertu','24')被中止。 叫 getNextException 以查看原因。

CompilerException clojure.lang.ArityException: 参数数错误 (6)传给:JDBC/DB-DO-Prepare

我正在尝试传递地图或矢量,但到目前为止它不起作用。

你能提供一些clojure.java.jdbc/insert! and clojure.java.jdbc/update!工作的具体例子吗?

也发现了这个问题,但不明白(first stmts) and (rest stmts)是什么。

(require '[clojure.java.jdbc :as jdbc]
'[java-jdbc.ddl :as ddl])
(jdbc/db-do-commands db-spec
(ddl/create-table :fruit
[:name "varchar(16)" "PRIMARY KEY"]
[:appearance "varchar(32)"]
[:cost :int "NOT NULL"]
[:unit "varchar(16)"]
[:grade :real]))
;; -> (0)

(jdbc/insert! db-spec :fruit
nil ; column names omitted
["Red Delicious" "dark red" 20 "bushel" 8.2]
["Plantain" "mild spotting" 48 "stalk" 7.4]
["Kiwifruit" "fresh"  35 "crate" 9.1]
["Plum" "ripe" 12 "carton" 8.4])

最新更新