Parsing Groovy:解析mysql数据库更改的文件

Parsing Groovy:解析mysql数据库更改的文件,parsing,text,groovy,Parsing,Text,Groovy,我有一个包含以下内容的文本文件: ACTION = NEW // (NEW, CHANGE) NEW_NUMBER = '123456' NUMBER_FOR_CHANGE = '789456' TEXT_NAME1 = 'TEST1' TEXT_NAME2 = 'TEST2' TEXT_NAME3 = 'TEST3' 我想在Groovy脚本上编写一段代码,用于解析此文件并进行下一步更改: 如果操作=新建: `sql.executeInsert "INSERT INTO TABL

我有一个包含以下内容的文本文件:

ACTION = NEW        // (NEW, CHANGE)
NEW_NUMBER = '123456'
NUMBER_FOR_CHANGE = '789456'
TEXT_NAME1 = 'TEST1'
TEXT_NAME2 = 'TEST2'
TEXT_NAME3 = 'TEST3'
我想在Groovy脚本上编写一段代码,用于解析此文件并进行下一步更改:

如果操作=新建:

`sql.executeInsert "INSERT INTO TABLE.DB (NUMBER, NAME1, NAME2, NAME3) VALUES ($NEW_NUMBER, $TEXT_NAME1, $TEXT_NAME2, $TEXT_NAME3)" `    
如果操作=更改:

    sql.executeUpdate "UPDATE TABLE.DB SET NAME1 = $TEXT_NAME1, NAME2 = $TEXT_NAME2, NAME3 = $TEXT_NAME3 WHERE NUMBER LIKE $NUMBER_FOR_CHANGE"
如果操作=删除:

    sql.execute "DELETE FROM TABLE.DB WHERE NUMBER = $NUMBER_FOR_CHANGE"
如果有任何帮助,我将不胜感激


谢谢

像这样的东西可以吗

def sqlstr = new Properties().with { props ->
  new File( '/path/to/file' ).withReader { r ->
    load( r )
    switch( props.ACTION ) {
      case 'NEW':
        "INSERT INTO TABLE.DB (NUMBER, NAME1, NAME2, NAME3) VALUES ($NEW_NUMBER, $TEXT_NAME1, $TEXT_NAME2, $TEXT_NAME3)"
        break
      case 'CHANGE':
        "UPDATE TABLE.DB SET NAME1=$TEXT_NAME1, NAME2=$TEXT_NAME2, NAME3=$TEXT_NAME3 WHERE NUMBER = $NUMBER_FOR_CHANGE"
        break
      case 'DELETE':
        "DELETE FROM TABLE.DB WHERE NUMBER = $NUMBER_FOR_CHANGE"
        break
      default:
        throw new RuntimeException( "Unknown ACTION $props.ACTION" )
    }
  }
}

// Assuming sql is set up right:
sql.execute sqlstr

java.lang.RuntimeException:未知操作新建/(新建,更改)您将
/(新建,更改)
留在那里?我以为这只是这个问题的一个例子?这个动作字符串的描述。我将对文本文件中的每个字符串进行相同的描述。此外,我还计划在脚本中使用其他防御措施,如ACTIO。作为primet:ACTION2,它将启动其他sql查询。我没有意识到这一点,您也没有提到。。。为什么不在注释前面加上
#
,并将它们放在单独的行中?然后您可以使用上面的属性代码,因为这是标准。否则,您编写自己的文件格式只会获得很少的收益。好的,我按照您的建议做了,现在我有另一个错误:java.lang.RuntimeException:Unknown ACTION:NEW