grails - 为引导数据创建自定义迁移脚本并在 Grails 中执行一些与 SQL 相关的操作

标签 grails migration

我正在做一个 Grails 项目。在这我需要做两件事相关迁移脚本 如下 :

  • 我为引导数据制作了一个脚本,并且还为引导数据制作了 BootStrap.groovy。我的两个脚本代码如下:

    BootStrape.groovy

    Mine DatabaseInit.groovy Script

    现在我想在我的 中实现(或移动代码)这两个脚本。迁移脚本 .如何实现,请给我一些提示。
  • 我需要执行一些 SQL 操作来从数据库中删除一些重复值,如下所示
    UPDATE DatabaseName.TableName1 SET ColumName = 2 WHERE ColumName IN (
    SELECT ColumName FROM DatabaseName.TableName2 st WHERE st.ColumName = 'XYZ');
    
    DELETE FROM DatabaseName.TableName2 WHERE ColumName NOT IN (2);
    

    怎么写迁移脚本 为了完成这个任务。
  • 最佳答案

    建议您将 Bootstrap 文件保持在很小的范围内……内部没有太多代码,并且遵循您的好方法。

    因此,您需要尝试创建一个 new migration scrip file即使您的DOMAIN 没有变化.因为,这将帮助您添加您的 sql 脚本,如果它们一旦成功创建,则以后不会在每次启动时执行它们。

    grails命令行上的TODO:

    grails dbm-create-changelog
    grails prod dbm-generate-gorm-changelog --add changelog-1.0.whatevername.groovy
    

    然后 ,

    changelog-1.0.whatevername.groovy 中添加 sql 脚本文件如下:
    1.Using sql file like 
    
        //sqlFile( path: "${ path to SQL file relative to changelog.groovy }")
        //Used in a changeset, it looks like this:
        changeSet(author: "username", id: "1305821637932-1") { //id:is to be changed
          sqlFile( path: "books.sql")
        }
    

    2.通过在里面写脚本来使用
    changeSet(author: "username", id: "1305821637932-2") {  //id : is to be changed
      addColumn(tableName: "book") {
        column(name: "flammable", type: "BIT") {
           constraints(nullable: "false")
        }
      }
      SQL("UPDATE DatabaseName.TableName1 SET ColumName = 2 WHERE ColumName IN (
      SELECT ColumName FROM DatabaseName.TableName2 st WHERE st.ColumName = 'XYZ'))";
      SQL("DELETE FROM DatabaseName.TableName2 WHERE ColumName NOT IN (2)");
    }
    

    编码快乐!!请引用 thisthis

    关于grails - 为引导数据创建自定义迁移脚本并在 Grails 中执行一些与 SQL 相关的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22704964/

    相关文章:

    java - Grails:防止外键内容被更新

    reactjs - react 和 typescript : Constant enums and namespaces are not supported

    git - Clearcase 到 Git 的迁移问题

    ruby-on-rails - rails 迁移中 self.up 和 up 的区别

    swift - 从 swift 3 迁移到 swift 4.2 时,AVAudioSession.mode 导致 "Editor placeholder in source file"错误

    grails - 使用jQuery Mobile的Grails GSP页面片段链接问题

    grails - session 变量不符合GXT

    grails - 如果我不提前知道服务器名称和端口,如何在企业环境中设置grails.serverURL?

    ruby-on-rails - 何时(如果)合并 ActiveRecord 迁移?

    regex - 使用正则表达式进行验证