Managing database schema

351 views
Skip to first unread message

Colin Yates

unread,
May 14, 2015, 4:45:31 AM5/14/15
to clo...@googlegroups.com
Is there a lib that will allow me to have my sql defined in a file which I can reference from Clojure? I cannot use one of the existing migration libraries as I need to do more than just manipulate SQL on a version upgrade.

I am aware of yesql which would be great but it didn't work out for DDL. Specifically yesql seems to associate one block of sql for each name. I want to have multiple blocks (e.g. a 'create table ...' as well as a number of 'alter table create index idx_....').

I have tried embedding the sql as a string in the .clj file. This isn't as painful as it might sound but is still painful enough.

Any suggestions?

Gadzhi Musaev

unread,
May 14, 2015, 5:19:01 AM5/14/15
to clo...@googlegroups.com
Have you looked at ragtime? Particularly it's sql.files library. As far as I see, it will suit your needs.

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clo...@googlegroups.com
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
clojure+u...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
---
You received this message because you are subscribed to the Google Groups "Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Colin Yates

unread,
May 14, 2015, 6:34:33 AM5/14/15
to clo...@googlegroups.com
Thanks, I'll take a look

Sent from my iPhone

Stuart Sierra

unread,
May 14, 2015, 6:37:32 AM5/14/15
to clo...@googlegroups.com, colin...@gmail.com
You can put a .sql file in /resources and read it with clojure.java.io/resource.
–S

Brett Morgan

unread,
May 14, 2015, 9:33:00 PM5/14/15
to clo...@googlegroups.com
I use clj-liquibase, https://github.com/kumarshantanu/clj-liquibase. It's a clojure wrapper for Liquibase. There is a function to load schema changes (changeset) from a file, along with many other functions to create changesets for your schema.

René Groß

unread,
May 15, 2015, 4:01:29 AM5/15/15
to clo...@googlegroups.com
I can suggest https://github.com/teropa/lein-flyway, which wraps the functionality of flyway into leiningen commands.

andy.c...@fundingcircle.com

unread,
May 26, 2015, 10:01:36 PM5/26/15
to clo...@googlegroups.com
One problem we found with ragtime is that if multiple developers are working on a schema simultaneously, it's quite easy to get into a state where `lein ragtime migrate` will complain about finding a migration it doesn't expect. I think you can work around this by rolling back to the nearest common ancestor and then going forward again but it's just a bit of a speed bump to be aware of.
Reply all
Reply to author
Forward
0 new messages