Groovy   发布时间:2022-04-12  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了利用groovy把表中数据导出成txt或csv大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
胶水语言就是胶水,写起也挺快的.这个脚本主要是从数据库中把表中的数据导出来生成文件.而不用每次都打开数据库编辑器去手工收集.然后结合强大的脚本(sHell,bat)等基本就可以实现定时生成最新数据文本了.

目前这个groovy脚本只要输入sql语句,便自动去反射表中的字段和类型.
脚本名称:export.groovy
  1. import groovy.sql.sql;
  2. try
  3. {
  4. if(this.args.size()<1)
  5. {
  6.     println "格式错误!请参照下面的正确格式"
  7.     println "export [sql:可以正确执行的sql语句]"
  8.     return;
  9. }
  10. }
  11. catch (Exception E)
  12. {
  13.     println "格式错误!请参照下面的正确格式"
  14.     println "export [sql:可以正确执行的sql语句]"
  15.     return;
  16. }
  17. /*
  18. 连接对象
  19. 可以根据你自己的需要调整
  20. */
  21. sql = sql.newInstance("jdbc:Oracle:thin:@10.220.51.40:1521:ORA10G","用户名","密码","Oracle.jdbc.driver.OracleDriver");
  22. /* sql语句 可以根据自己需要调整*/
  23. strsql=this.args[0];
  24. //方法_获取表名
  25. def getTablename={strsql->
  26.  pattern= ~"FROM .*"
  27.  matcher = strsql.toUpperCase()  =~ pattern
  28.  tableName="";
  29.  while(matcher.find()){
  30.      tableName= matcher.group()
  31.  }
  32.  return tableName.split(' ')[1];
  33. }
  34. //方法判断字符串里面是否有中文
  35. def isChinaese={ str->  
  36.  if(str==null)
  37.      return;
  38.     
  39.  for (i in 0..str.size()-1)
  40.  {
  41.     if(str.charAt(i)>127)
  42.     {
  43.         return true;
  44.     }
  45.  } 
  46.   return false;
  47. }
  48. def file_tablename=getTablename(strsql);//表名
  49. def result_columnCount=0;//列数
  50. def result_columnName=[];//列名
  51. def result_columnType=[];//列类型
  52. def result_rowsData=[];//行数据
  53. def rows_count=0;
  54. //在该脚本的同级目录下生成已表名命名的csv文件
  55. file_csv= new File("${file_tablename}.txt");
  56. //判断文件是否存在,如果存在写删除
  57. if(file_csv.exists()){
  58. println "在当前目录下发现已经存在${file_tablename},程序已经删除文件"
  59.     file_csv.delete()
  60. }
  61. println "准备生成${file_tablename}.csv"
  62. sql.eachRow(strsql,
  63.     {
  64.         result_columnCount= it.getcolumnCount();        
  65.         
  66.         println "*********${file_tablename}表结构**********"
  67.         println ":本次导出共生成${result_columnCount}个字段";
  68.         for (i in 1..result_columnCount){  //不同与java,groovy下标从1开始          
  69.             println    it.getcolumnName(i) +"   |    "+ it.getcolumnTypename(i) ;   
  70.             result_columnName<<it.getcolumnName(i);
  71.             result_columnType<<it.getcolumnTypename(i);           
  72.         }
  73.         println "*********${file_tablename}表结构**********"
  74.         file_csv<<result_columnName.join(",")+System.getProperty("line.separator"); 
  75.         
  76.         println "开始生成数据,请耐心等待......"
  77.     },
  78.     {
  79.         rows_count++;
  80.         result_rowsData=[]; //清空对象  
  81.         for (j in 0..result_columnCount-1)
  82.         {            
  83.             if(result_columnType[j]=="VARCHAR2" || result_columnType[j]=="VARCHAR"){ //针对VARCHAR类型进行处理,加上"号
  84.                  String strtemp="";
  85.                 //先要判断是否含有中文,有中文就不加"号
  86.            /*     if(isChinaese(it[j]))
  87.                 {
  88.                     strtemp=it[j]
  89.                 }
  90.                 else
  91.                 {
  92.                     strtemp="/""+it[j]+"/"";
  93.                 }      
  94.                 */
  95.                     strtemp="/""+it[j]+"/"";
  96.                  result_rowsData<<strtemp;
  97.             }
  98.             else //其他类型不做处理
  99.             {        
  100.                 result_rowsData<<it[j];
  101.             }
  102.         }
  103.  
  104.          file_csv<< result_rowsData.join(",")+System.getProperty("line.separator");
  105.     
  106.     }    
  107. );
  108. println "${file_tablename}数据生成完毕(导出数据行数:${rows_count})/n"


然后再给这个groovy脚本写几个对应的sHell/bat执行脚本
比如:
文件名:生成基站.bat
  1. groovy export "SELEct * from shw.chal_cell_base_info"

如图:

利用groovy把表中数据导出成txt或csv

那么当每次都要生成最新数据的时候,直接去双击这些bat文件即可.或者你直接把这些bat配置到操作系统的执行任务当中去即可.

大佬总结

以上是大佬教程为你收集整理的利用groovy把表中数据导出成txt或csv全部内容,希望文章能够帮你解决利用groovy把表中数据导出成txt或csv所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。