在实际的生产中,会遇到数据库版本的不同,sql语句的语法会出现改变,
我在这次的金仓数据库中就遇到了,V8版本的建表语句跟V7版本的不一样,所以需要对里面内容进行修改
从图中我们可以看到到,这个是金仓数据库v8版本导出的建表语句,这个语句在v7版本是不能运行的
我们需要做的就是
在这分享一小段java代码,本人是个菜鸟,大家看到写得不好也请见谅!
首先在idea里面创建一个maven项目,具体的创建步骤就不多说了
package com.gong;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class SqlDeal {
//按行读取文件内容到集合
public static List<String> readFlie(File file){
List<String> input = new ArrayList<String>();
try{
BufferedReader br = new BufferedReader(new FileReader(file));//构造一个BufferedReader类来读取文件
String s = null;
while((s = br.readLine())!=null){//使用readLine方法,一次读一行
// System.out.println(s);
input.add(s);
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
return input;
}
//处理内容
public static List<String> dealdata(List<String> inputdata){
List<String> outputdata = new ArrayList<String>();
for(int i=0;i<inputdata.size();i++){
String element=inputdata.get(i);
String outElement=null;
if(element.contains("char")){
outElement = element.replaceAll("char", "");
outputdata.add(outElement);
}else {
outputdata.add(element);
}
}
for(int j=0;j<outputdata.size();j++){
String temp = outputdata.get(j);
System.out.println(temp);
}
return outputdata;
}
//把内容写入文本文件中
public static void writercontent(List<String> output,String filepath) throws IOException {
File file = new File(filepath);
if(!file.exists()){
file.createNewFile();
}
FileWriter fileWriter = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fileWriter);
for(int i=0;i<output.size();i++){
bw.write(output.get(i).toString());
bw.newLine();
}
bw.close();
}
public static void main(String[] args) throws IOException {
//输入文件
File infile = new File("D:\\MyCode\\sqldeal\\inputdata\\input.sql");
List<String> inputdata=new ArrayList<String>();
inputdata=readFlie(infile);//读取输入的文件内容
List<String> onputdata=new ArrayList<String>();
onputdata=dealdata(inputdata);//对内容进行处理
//输出文件的路径
String outputpath="D:\\MyCode\\sqldeal\\outputdata\\output.sql";
writercontent(onputdata,outputpath);//把处理后的内容写入到文件
}
}
运行代码,查看输出路径的文件内容
成功!!