module Main where import Database.HDBC.Sqlite3 (connectSqlite3) import Codec.Compression.GZip (compress) import Database.HDBC (execute, prepare, SqlValue(..)) import System.Directory (getDirectoryContents) import System.FilePath.Posix (takeExtension, joinPath) import qualified Data.ByteString as BS dbfile = "/home/vegai/dbdump/xml.db" xml_dir = "/home/vegai/dbdump/outgoing" stmt = "INSERT INTO xmls VALUES ( ?, ? )" writeRow db prepared_stmt file = writeRow' (takeExtension file) where writeRow' ".xml" = do contents <- BS.readFile expandedFile compressedContents <- compress contents -- HAPPENS DUE TO THIS execute prepared_stmt [ SqlString file, SqlByteString compressedContents ] return () writeRow' _ = return () expandedFile = joinPath [xml_dir, file] main = do db <- connectSqlite3 dbfile files <- getDirectoryContents xml_dir prepared_stmt <- prepare db stmt mapM_ (writeRow db prepared_stmt) files return ()