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. SQL server 视图、范式

    视图 1.视图的概述       视图其实就是一条查询sql语句,用于显示一个或多个表或其他视图中的相关数据.视图将一个查询的结果作为一个表来使用,因此视图可以被看作是存储的查询 或一个虚拟表.视图来 ...

  2. bzoj4517: [Sdoi2016]排列计数--数学+拓展欧几里得

    这道题是数学题,由题目可知,m个稳定数的取法是Cnm 然后剩下n-m本书,由于编号为i的书不能放在i位置,因此其方法数应由错排公式决定,即D(n-m) 错排公式:D[i]=(i-1)*(D[i-1]+ ...

  3. Centos7 创建个文件 thread 怪现象

    我在~下创建个目录thread, 然后写了个程序, 再执行, 提示需要权限, 之后我重命名下文件的名字, 重新编译下, 就可以正常执行了.

  4. IOS第八天(2:UITableViewController团购,点击底部,xib加载更多, 代理模式)

    ******* HMViewController.h #import "HMViewController.h" #import "HMTg.h" #import ...

  5. Python的正则表达式笔记

    1. "先抓大再抓小": 遇到一个正则表达式无法一次性筛选出所需内容时, 可以先在一个范围内筛选第一次, 再在小范围中筛选第二次. 2. pattern = re.compile( ...

  6. c语言的输入输出函数

    参考文章: http://blog.sina.com.cn/s/blog_784f40b80100psg9.html C语言输入输出函数分为两类: 1.格式化输入输出函数 2.非格式化输入输出 --- ...

  7. Flink -- Barrier

    CheckpointBarrierHandler 这个接口用于react从input channel过来的checkpoint barrier,这里可以通过不同的实现来,决定是简单的track bar ...

  8. 反向代理在Web渗透测试中的运用

    在一次Web渗透测试中,目标是M国的一个Win+Apache+PHP+MYSQL的网站,独立服务器,对外仅开80端口,网站前端的业务系统比较简单,经过几天的测试也没有找到漏洞,甚至连XSS都没有发现, ...

  9. JS中isPrototypeOf 和hasOwnProperty 的区别

    1.isPrototypeOf isPrototypeOf是用来判断指定对象object1是否存在于另一个对象object2的原型链中,是则返回true,否则返回false. 格式如下: object ...

  10. KingBlog记录

    本片文章其他人可能看不懂,只是我做记录用,不要见怪 KingBlogCMS总结 开发工具: VS2012+SOLServer2008+IIS 开发语言: ASP.NET.Html.js.JQ 第三方: ...