Tôi đang cố gắng chèn bản ghi vào DB sau, và mất khoảng 3 giờ trong khi mất 40 giây bằng cách sử dụng lệnh python psycopg2 và cursor.copy_fromChèn các bản ghi tệp vào db postgres bằng cách sử dụng jjc clojure mất nhiều thời gian so với python psycopg2
Mã của tôi sai, sử dụng clojure.java.jdbc/db-do-prepared cũng mất khoảng 3 giờ nữa. Xin vui lòng giúp đỡ!
Kích thước là 175 triệu và nó có 409.854 hồ sơ
(defn-
str<->int [str]
(let [n (read-string str)]
(if (integer? n) n)))
(with-open [file (reader "/path/to/foo.txt")]
(try
(doseq [v (clojure-csv.core/parse-csv file)]
(clojure.java.jdbc/insert! db :records
nil
[(v 0) (v 1) (v 2) (str<->int (v 3))]))
(println "Records inserted successfully")
(Exception e
(println (.getNextException e) e))))
Tôi đang sử dụng Clojure phiên bản 1.8.0, bạn có thể chia sẻ một ví dụ về cách nó có thể được thực hiện trong clojure –
Tôi đã thêm một ví dụ mã trong Clojure - kiểm tra nó như tôi đã không chạy nó. –
Vâng, tôi đã sử dụng lệnh Sao chép PSQL mà bạn đề xuất, thậm chí không cần phải đúc từng trường, điều này thực sự dễ dàng và nhanh hơn. Cảm ơn –