1

我制作了一个脚本,用于连接数据库并更改特定列中的数据以确定数字。现在我想从具有特定扩展名的文本文件中读取一个数字,对数据库中的这些数字进行更改,然后用 .bak 扩展名重命名文件。请帮帮我。我提前感谢您的帮助!

import groovy.sql.Sql
sql = Sql.newInstance('jdbc:mysql://localhost:3306/database', 'login', 'password', 'com.mysql.jdbc.Driver')
int rowsAffected = sql.executeUpdate('update tablename set column = '01' where number=$NumberFromFile')
println "updated: ${rowsAffected}"
4

2 回答 2

1

像这样的东西应该工作:

def newValue = '01'

new File( '/path/to/data.input' ).with { file ->
  file.withReader { reader ->
    new Scanner( reader ).useDelimiter( ';' ).with { scanner ->
      while( scanner.hasNext() ) {
        sql.executeUpdate "UPDATE tablename SET column=$newValue WHERE number=${scanner.nextInt()}"
      }
    }
  }
  file.renameTo( new File( file.parent, "${file.name}.bak" ) )
}

显然,您可能希望在事务或批次中执行此操作,但这应该会给您这个想法

于 2012-11-19T10:53:06.273 回答
0

现在我有一个脚本:

def tmn_file = ~/.*\.tmn/
def tmc_file = ~/.*\.tmc/
def newTerm = new Properties().with { props ->
    new File(inputPath).eachFile(tmn_file) { file ->
        file.withReader    { reader ->
            load( reader )
            println "Read data from file $file:"
            something read from file...
            switch( props.ACTION ) {
                case 'NEW':
                    do something...
                    }
            switch( props.ACTION ) {
                case 'CHANGE':
                    do something...
                    }

此脚本在目录中查找路径 inputPath 扩展名为 tmn_file 的文件,该文件可以包含 ACTION - NEW 或 CHANGE。

脚本效果很好,但我想做另一件事:

如果文件具有扩展名 *.tmn (tmn_file) - 仅以新案例开始 ACTION

如果文件具有扩展名 *.tmc (tmc_file) - 仅以更改大小写开始操作

我怎样才能实现决定?

于 2013-05-20T09:55:15.267 回答