próbuję wstawić rekordów do PostgreSQL DB, a jego biorąc około 3 godzin, podczas gdy trwa 40seconds użyciu Pythona psycopg2 i sposobu cursor.copy_fromwstawiania rekordów pliku do PostgreSQL DB wykorzystujące Clojure JDBC trwa długo w porównaniu do Pythona psycopg2
Co jest nie tak z moim kodem, użycie clojure.java.jdbc/db-do-prepared również zajmuje około 3 godzin. Proszę o pomoc!
Rozmiar pliku jest 175M i ma 409,854 rekordy
(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))))
Używam wersji Clojure 1.8.0, czy możesz udostępnić przykład jak to zrobić w clojure –
Dodałem przykład kodu w Clojure - przetestuj go tak, jak go nie uruchomiłem. –
Cóż, użyłem polecenia kopiowania PSQL, które zasugerowałeś, nawet nie musiałem rzutować każdego pola, to jest rzeczywiście łatwiejsze i szybsze. Dzięki –