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...
                    }

このスクリプトは、拡張子がtmn_fileのパスinputPathファイルを含むディレクトリを検索します。このファイルには、ACTION-NEWまたはCHANGEを含めることができます。

スクリプトはうまく機能しますが、私は別のものを作りたいです:

ファイルの拡張子が*.tmn(tmn_file)の場合-新しいケースでACTIONのみを開始します

ファイルの拡張子が*.tmc(tmc_file)の場合-大文字と小文字を変更してACTIONのみを開始します

どうすれば決定を実現できますか?

于 2013-05-20T09:55:15.267 に答える