2015-02-11 32 views
0

提到以下链接https://my.vertica.com/docs/6.0.x/HTML/index.htm#14874.htm当执行错误,我们可以使用JDBC使用Clojure的

boolean result = stmt.execute("COPY customers FROM " 
          + " '/data/customers.txt' DIRECT ENFORCELENGTH"); 

但它不Clojure中工作

(clojure.java.jdbc/execute! vertica-db "copy customer1.stage_test_etl_195 from '/tmp/valid-197.csv' DELIMITER '|' DIRECT ENFORCELENGTH ") 

ClassCastException java.lang.Character cannot be cast to java.lang.String clojure.java.jdbc/prepare-statement (jdbc.clj:457) 

回答

1

有clojure.jdbc文档仔细阅读。第二个参数执行!应该是第一个元素是SQL和其他(可选)参数的矢量。下面可能工作

(clojure.java.jdbc/execute! vertica-db ["copy customer1.stage_test_etl_195 from '/tmp/valid-197.csv' DELIMITER '|' DIRECT ENFORCELENGTH "]) 

假设是对DB后端法律声明