怎么做批处理jdbc / insert!和jdbc /更新!在Clojure中使用postgresql?

时间:2017-06-09 10:52:09

标签: postgresql jdbc clojure

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

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

互联网上有一些例子,但是我无法使它工作,我最终得到这样的例外:

  

CompilerException java.sql.BatchUpdateException:批处理项0 INSERT   INTO人(数据,年龄)价值观(' ertu'' 24')已中止。呼叫   getNextException查看原因。

  

CompilerException clojure.lang.ArityException:args数量错误   (6)传递给:jdbc / db-do-prepared

我试图传递地图或向量,但到目前为止它还无效。

您能提供clojure.java.jdbc/insert! and clojure.java.jdbc/update!工作的具体示例吗?

同时发现此question但不明白(first stmts) and (rest stmts)是什么。

1 个答案:

答案 0 :(得分:0)

(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])