是否有一个很好的DSL来操纵独立于任何特定Web框架的MySQL脚本?

Pet*_*rko 6 mysql dsl

我有一个简单的MySQL脚本,我在Web应用程序中使用它完成重建/重置我的数据库到一个干净的初始状态.因此,在这个脚本中我定义了我需要的各种表,存储过程等.

这是相当不错的初始解决方案b/c它很简单并且可以完成工作而不会过度杀伤.但是有一些缺点.一个例子是打字.定义具有更丰富类型的存储过程会很好,所以我不需要像VARCHAR(64)那样重复声明.

因此,我的问题是:是否有一个很好的DSL来操纵MySQL脚本?(例如,它最终可以生成有效的MySQL脚本),这实际上是一个很好的DSL而不是MySQL,而不是试图做太多而且有太多的花里胡哨.如果语言本身对DSL有很好的支持会更好,但更重要的是,找到一些不是特定的Web框架的东西会很好.

一些粗略的搜索没有产生任何立即显而易见的东西.

我想一个实际的替代方案就是使用你最喜欢的ORM来获得一个非常好的解决方案.因此,这个问题的部分动机是看看DSL方法是否已被探索取得任何成功.

小智 2

我假设您指的是内部 DSL(请参阅http://martinfowler.com/bliki/DomainSpecificLanguage.htmlhttp://en.wikipedia.org/wiki/Domain-specific_language),因为 SQL一种 DSL,即外部 DSL(根据 Martin Fowler 的定义,已获得相当广泛的接受)。

考虑到这个假设,并且不知道您喜欢哪种语言,我能够找到一些用于 SQL 代码生成的内部 DSL:

  • Ruby - sqldsl.rubyforge.org/
  • Java - code.google.com/p/sql-dsl/
  • Scala - github.com/p3t0r/scala-sql-dsl

如果你用谷歌搜索“SQL DSL”还有更多,也可以尝试用谷歌搜索“SQL DSL [在这里输入你最喜欢的语言]”,你可能会找到更合适的东西。

另一种具有不同优点和缺点(与内部 DSL 相比)的方法是从模板生成 SQL 代码。带有变量转义(或串联)的字符串形式的模板,或者使用模板语言的单独文件中的模板。