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