2012-11-19 15 views
1

我制作了一个脚本,用于连接到数据库并更改特定列中的数据以确保编号。 现在我想从具有特定扩展名的文本文件中读取数字,对数据库中的这些数字进行更改,然后使用.bak扩展名重命名文件。 请帮助我。我很感激你的帮助!Groovy:解析具有特定扩展名的文件以导入到MySQL,然后将其重命名为* .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}" 
+1

你的文件是否只有带有'oldNum newNum'的文本行? –

+0

文件包含用“;”分隔的八位数字的数值,如:12345678; 87654321; ...等 – lsv

+0

全部在一行上? –

回答

1

像这样的东西应该工作:

​​

很明显,你可能想要做一个交易,或批处理,但是这应该给你的想法

+0

2012年11月19日下午3时42分18秒org.codehaus.groovy.runtime.StackTraceUtils消毒 警告:消毒堆栈跟踪: java.util.InputMismatchException – lsv

+0

@MarkTailor在哪条线路?你的输入文件是否只有一行代码?尝试用'println'替换'sql.executeUpdate'是否打印任何内容?文件最后是否有';'? –

+0

问题在文件中,因为“;”之后我有一个“换行符”分隔符,所以我添加了useDelimiter(“\ r \ n”),现在它为我工作。谢谢! – lsv

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文件,该文件可以包含行动 - 新或更改。

脚本的伟大工程,但我想使另一件事:

如果文件中有扩展名为* .tmn(tmn_file) - 开始只有行动,新情况

如果文件中有扩展名为* .tmc(tmc_file ) - 开始只有行动与变化案件

我怎么能实现的决定?

相关问题