package com;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader; import javax.swing.JFileChooser;
import javax.swing.JOptionPane; public class supZhtool_1 { public static void main(String[] args) throws IOException { String path ="";//源文件路径,不包括文件名称
String pathzh = "";//转换unicode编码后文件输出路径
String pathinsert = "";//筛选出insert语句后的文件输出路径
String pathSource = "";//源文件路径,包含文件名称的源文件路径 JFileChooser fDialog = new JFileChooser(); fDialog.setDialogTitle("请选择需要转换的文件"); int returnVal = fDialog.showOpenDialog(null);//弹出文件选择框 if(JFileChooser.APPROVE_OPTION == returnVal){
pathSource = fDialog.getSelectedFile().toString();//获取文件路径并赋值给源文件路径 //判断源文件路径是否正确
if(!"script".equals(pathSource.substring(pathSource.length()-6,pathSource.length()))){
JOptionPane.showMessageDialog(null, "请检查您选择的文件是否正确!");
return;
} String path_temp1[] = pathSource.split("\\\\"); //组装文件地址,不包含文件名称的地址
for (int i = 0; i < path_temp1.length-1; i++) {
path = path + path_temp1[i]+"\\\\";
}
//定义转换unicode编码之后的文件名称和地址
pathzh = path +"blazezh.script";
//定义insert语句文件的输入地址,和文件名称
pathinsert = path +"01_SR0001_BTDS2DATA_DML_BTDS.sql"; } unicodeChange(pathSource,pathzh); pickInsertSql(pathzh,pathinsert); JOptionPane.showMessageDialog(null, "转换完毕!"); } /**
* 删除转换期间产生的的无用的文件
*/
public static void deleFile(){
String pathG = System.getProperty("user.dir");
File file = new File(pathG+"\\blazezh.script");
if (file.isFile() && file.exists()) {
file.delete();
}
} /**
*
* 挑选出Insert语句,并写入到文件中
*
*/
public static void pickInsertSql(String pathzh,String pathinsert) throws IOException{ File write = new File(pathinsert); File file = null;
BufferedReader br = null;
BufferedWriter bw = new BufferedWriter(new FileWriter(write)); file = new File(pathzh);
br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));
StringBuilder sb = new StringBuilder();
String length = "";
while ((length = br.readLine()) != null) {
sb.append(length); String sql = sb.toString();
sql = datestampChange(sql);
sql = dateChange(sql);
if("INSERT".equals(sql.substring(0,6))){
String release_info = sql.substring(0,24);
if("INSERT INTO RELEASE_INFO".equals(release_info)){ String release_info_sub = sql.substring(0,sql.length()-1);
release_info_sub = release_info_sub +","+"'PingAnProject')"; String []temp1 = release_info_sub.split(",");
for (int i = 0; i < temp1.length; i++) {
if(i==2){
temp1[2] = "'********'";
}
} String insert = ""; for (int i = 0; i < temp1.length; i++) { if(i<temp1.length-1){
insert = insert + temp1[i]+",";
}else{
insert = insert + temp1[i];
}
}
String []temp2 = insert.split(",");
if(temp2.length<8){
bw.write("--"+insert.toString() +";"+ "\r\n");
}else{
bw.write(insert.toString() +";"+ "\r\n");
}
}else{
bw.write(sql.toString() +";"+ "\r\n");
}
bw.flush();
sb = new StringBuilder();
}
sb = new StringBuilder();
} } /**
*
* 日期转换工具,类型是yyyy-mm-dd类型
*
*/ public static String dateChange(String temp){ String temp2="";
String [] temp1 = temp.split(","); for (int i = 0; i < temp1.length; i++) {
String dateFlag = temp1[i].toString();
String[] datesub = dateFlag.split("-");
if(datesub.length>2&&dateFlag.length()<13){
dateFlag = dateFlag.substring(1,11);
temp1[i] = "to_date('"+dateFlag+"','yyyy-mm-dd')";
}
} for (int i = 0; i < temp1.length; i++) {
if(i<temp1.length-1){
temp2 = temp2 + temp1[i]+",";
}else{
temp2 = temp2 + temp1[i];
}
} return temp2;
} /**
*
* 日期转换工具,类型是yyyy-mm-dd hh24:mi:ss.ff类型
*
*/
public static String datestampChange(String temp){ String temp2="";
String [] temp1 = temp.split(","); for (int i = 0; i < temp1.length; i++) {
String dateFlag = temp1[i].toString();
if(dateFlag.length()>30){
dateFlag = dateFlag.substring(1,30);
if("000".equals(dateFlag.substring(dateFlag.length()-3, dateFlag.length()))){
String user_favorite = temp.substring(0,25);
if("INSERT INTO USER_FAVORITE".equals(user_favorite)){
temp1[i] = "to_timestamp('"+dateFlag+"','yyyy-mm-dd hh24:mi:ss.ff'))";
}else{
temp1[i] = "to_timestamp('"+dateFlag+"','yyyy-mm-dd hh24:mi:ss.ff')";
} }
}
} for (int i = 0; i < temp1.length; i++) {
if(i<temp1.length-1){
temp2 = temp2 + temp1[i]+",";
}else{
temp2 = temp2 + temp1[i];
}
}
return temp2;
} public static void unicodeChange(String path,String pathzh) throws IOException{ File write = new File(pathzh); File file = null;
BufferedReader br = null;
BufferedWriter bw = new BufferedWriter(new FileWriter(write));
file = new File(path);
br = new BufferedReader(new InputStreamReader(new FileInputStream(file), "gbk"));
StringBuilder sb = new StringBuilder();
String length = "";
while ((length = br.readLine()) != null) {
sb.append(length);
bw.write(ascii2Native(sb.toString()) + "\r\n");
bw.flush();
sb = new StringBuilder();
}
} public static String ascii2Native(String str) {
StringBuilder sb = new StringBuilder();
int begin = 0;
int index = str.indexOf("\\u");
while (index != -1) {
sb.append(str.substring(begin, index));
sb.append(ascii2Char(str.substring(index, index + 6)));
begin = index + 6;
index = str.indexOf("\\u", begin);
}
sb.append(str.substring(begin));
return sb.toString();
} private static char ascii2Char(String str) {
if (str.length() != 6) {
throw new IllegalArgumentException("长度不足6位");
}
if (!"\\u".equals(str.substring(0, 2))) {
throw new IllegalArgumentException("字符必须以 \"\\u\"开头.");
}
String tmp = str.substring(2, 4);
int code = Integer.parseInt(tmp, 16) << 8;
tmp = str.substring(4, 6);
code += Integer.parseInt(tmp, 16);
return (char) code;
} }

java转换unicode,筛选文件中的insert语句并把日期给转换为可以直接在数据库执行的语句的更多相关文章

  1. java代码将excel文件中的内容列表转换成JS文件输出

    思路分析 我们想要把excel文件中的内容转为其他形式的文件输出,肯定需要分两步走: 1.把excel文件中的内容读出来: 2.将内容写到新的文件中. 举例 一张excel表中有一个表格: 我们需要将 ...

  2. Linux下执行的java命令重定向到文件中的方法

    在Linux下通常会执行如:java -version 的命令, 但是,命令只是打印到了屏幕上不能重定向到文件中或标准输出流中. 此时需要将错误输出流重定向到标准输出流中就可以得到了. 比如:java ...

  3. Java IO把一个文件中的内容以字符串的形式读出来

    代码记录(备查): /** * 把一个文件中的内容以字符串的形式读出来 * * @author zhipengs * */ public class FileToString { public sta ...

  4. Mybatis实体类的映射文件中select,insert语句使用

    id:在命名空间中唯一的标识符,可以被用来引用这条语句. parameterType:设置传入这条语句的参数的数据类型,如int,String...... resultType:设置从这条语句中返回数 ...

  5. java使用ObjectInputStream从文件中读取对象

    import java.io.EOFException;import java.io.FileInputStream;import java.io.FileNotFoundException;impo ...

  6. JAVA 中文 unicode 相互转换 文件读取

    package com.test; import org.junit.Test; public class JunitTest { @Test public void test(){ String p ...

  7. 【反射】利用java反射原理将xml文件中的字段封装成对应的Bean

    本例使用的xml解析方式为jdom ... <ROOT> <Consignment> ... </Consignment> </ROOT> 解析xml文 ...

  8. Java程序栈信息文件中的秘密(五)

    最近发现在使用jstack工具在导出Java应用的线程栈时有一个小小的窍门,比如Linux环境上有一个用户为appuser,假如以这个用户启动了一个Java进程B,如果想要导出进程B的线程栈,则必须切 ...

  9. SQL Server清理大日志文件方法 不分离数据库 执行SQL语句即可

    SQL 2008清空日志的SQL语句如下: USE[master] GO ALTER DATABASE 要清理的数据库名称 SET RECOVERY SIMPLE WITH NO_WAIT GO AL ...

随机推荐

  1. 第 2 章 让jsp说hello

    2.1. 另一个简单jsp 上一篇举的例子很单纯,无论谁向服务器发送请求,服务器都只计算当前系统时间,然后把这个时间制作成http响应发还给浏览器. 可惜这种单向的响应没办法实现复杂的业务,比如像这样 ...

  2. 执行JDBC的executeUpdate()方法时,报错:数据类型不一致,应为number,但却为binary

    该原因是因为,在拼写update语句的时候将一个number类型的字段的值赋为了null导致的,如果想将一个number类型的字清空,不能使用null,可以使用“”来替代.

  3. 解决谷歌浏览器和360浏览器 input 自动填充淡黄色背景色的问题

     input:-webkit-autofill {-webkit-box-shadow: 0 0 0px 1000px white inset;}

  4. 【iCore3 双核心板】DEMO 1.0 测试程序发布

    iCore3 Demo V1.0 程序说明 一.概要 本资料包包含5个文件夹: 1.“arm”里是 icore3上 arm的程序包,开发环境为 KEIL 5.17: 2.“fpga”里是 icore3 ...

  5. Bootstrap:表格和栅格分页

      拼接table请将以下代码直接运行:换下 bootstrap.css jquery-1.12.3.min.js bootstrap-paginator.min.js" <!DOCT ...

  6. php一些特殊函数的使用实例详解

    <?php /* * PHP Array 函数大全 * * array() 创建数组. 3 array_change_key_case() 返回其键均为大写或小写的数组. 4 array_chu ...

  7. 实现服务器端与客户端的高频实时通信 SignalR(2)

    说明:本篇文章与上篇文章 实现服务器端与客户端的实时通信 SignalR(1) 基本代码类似,只是做了些处理 高频 的改动. 一.本文出处:SignalR 实例介绍 (建议看原著里面有DEMO下载) ...

  8. papi酱视频因违规遭下线整改,你知道原因吗?

    今日4月18日,在微信上的一篇<papi酱遭广电总局封杀 罗振宇1200万恐打水漂>的文章迅速转了起来,说的就是现在网红第一人“papi酱”的视频被广电总局责令下架的消息.箭头直指papi ...

  9. RML-怎样的语句会被归纳为同一类型(Unique Batches)

    我们知道使用RML工具分析跟踪数据(.TRC),其中的"Unique Batches",就是一个关于Batch级别的报表,Batch级别的报表针对的是存储过程或是一个TSQL Ba ...

  10. ArrayList 排序Sort()方法扩展

    1.sort() sort可以直接对默认继承 IComparable接口的类进行排序,如:int.string.... ArrayList arrayList = new ArrayList(); , ...