2011-09-04 16 views
6

我有一个简单的MySQL脚本,我使用的Web应用程序来完成重建/重置我的数据库到一个干净的初始状态。因此,在这个脚本中,我定义了我需要的各种表格,存储特效等。是否有一个好的DSL用于操纵独立于任何特定Web框架的MySQL脚本?

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

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

一些粗略的搜索没有立即产生任何明显的结果。

我想一个实际的选择是使用你最喜欢的ORM作为获得有效的解决方案的一种方式。因此,这个问题的部分动机是看看DSL方法是否能够取得成功。

回答

2

我假设你的意思是一个内部DSL(见http://martinfowler.com/bliki/DomainSpecificLanguage.htmlhttp://en.wikipedia.org/wiki/Domain-specific_language),因为SQL 一个DSL,即外部DSL(由Martin Fowler的定义,它已经获得了相当广泛的认可)。

鉴于这种假设,不知道你喜欢什么语言,我能找到一些内部DSL对SQL代码生成:

  • 红宝石 - sqldsl.rubyforge.org/
  • 的Java - 代码.google.com/p/SQL-DSL/
  • 斯卡拉 - github.com/p3t0r/scala-sql-dsl

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

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

+0

谢谢,是的,对于很多情况模板是一个很好的80%的解决方案。 –

相关问题