diff --git a/src/airlift/core.clj b/src/airlift/core.clj index 7ac5fe2..b78bb39 100644 --- a/src/airlift/core.clj +++ b/src/airlift/core.clj @@ -11,17 +11,19 @@ (def creds {:host "" :username "" :password ""}) -;;(defn -main [& args] -;; (let [chan (ch/channel creds)] -;; (ch/upload chan "hello.txt"))) - (defn -main [& args] (let [conn (db/init "" "" "") chan (ch/channel creds)] (doseq [table []] - (let [res (db/query conn (str "SELECT * FROM " table))] - (let [columns (db/columns res) data (atom [])] - (while (.next res) - (swap! data conj (map #(.getString res %) columns))) - (csv/write @data (str table ".csv")) - (ch/upload chan (str table ".csv"))))))) + (let [data [] res (db/query conn (str "SELECT * FROM " table))] + (let [headers (->> (first res) + (keys) + (map name) + (vec) + (conj data)) + body (->> (rest res) + (map (comp vec vals)) + (vec) + (apply conj headers))] + (csv/write body (str table ".csv")) + (ch/upload chan (str table ".csv"))))))) diff --git a/src/airlift/db.clj b/src/airlift/db.clj index c01963d..7c8d506 100644 --- a/src/airlift/db.clj +++ b/src/airlift/db.clj @@ -25,7 +25,7 @@ (defn query [conn query] "Executes query on db connection and returns ResultSet" - (.. conn (createStatement) (executeQuery query))) + (resultset-seq (.. conn (createStatement) (executeQuery query)))) (defn columns [response] "Returns vector of table columns"