maven依赖:
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>4.5.15</version>
</dependency>
主要分成多个文件:
普通索引
插入数据
建表语句
唯一性索引
其他需求update等 自行添加
修改输入目录,sql 所在的目录:INPUT_DEST
修改输出目录,sql 输出的目录:OUTPUT_DEST
package com.xiaoyun;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.io.file.FileWriter;
import cn.hutool.core.util.StrUtil;
import java.io.File;
import java.util.List;
public class SqlList {
private final static String INPUT_DEST = "F:\\sql\\";
private final static String OUTPUT_DEST = "F:\\sqlOutput\\";
/**
* 开头前缀
*/
private final static String startCreateIndex = "CREATE INDEX";
private final static String startInsert = "INSERT INTO";
private final static String startCreateTable = "CREATE TABLE";
private final static String startUniqueIndex = "CREATE UNIQUE INDEX";
//普通索引
private final static File createIndex = new File(OUTPUT_DEST + "index.sql");
//插入数据
private final static File insert = new File(OUTPUT_DEST + "insert.sql");
//建表语句
private final static File createTable = new File(OUTPUT_DEST + "table.sql");
//唯一性索引
private final static File uniqueIndex = new File(OUTPUT_DEST + "uniqueIndex.sql");
//TODO 未归类,建议查看自定义 截取前缀
private final static File not = new File(OUTPUT_DEST + "not.sql");
public static void main(String[] args) {
List<File> files = FileUtil.loopFiles(INPUT_DEST);
files.stream().parallel().forEach(fileItem -> {
if (fileItem.toString().endsWith(".sql")) {
try {
FileReader fileReader = new FileReader(fileItem);
String str = fileReader.readString();
String removeStr = StrUtil.removeAllLineBreaks(str);
String[] split = removeStr.split(";");
for (int i = 0; i < split.length; i++) {
String s = split[i];
//建表语句
if (startWithStr(createTable, startCreateTable, s)) continue;
//插入语句
if (startWithStr(insert, startInsert, s)) continue;
//索引语句
if (startWithStr(createIndex, startCreateIndex, s)) continue;
//唯一索引语句
if (startWithStr(uniqueIndex, startUniqueIndex, s)) continue;
//TODO 未归类语句
FileWriter fileWriter = new FileWriter(not);
fileWriter.append(s + ";");
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
private static boolean startWithStr(File createTable, String startCreateTable, String s) {
if (s.startsWith(startCreateTable)) {
FileWriter fileWriter = new FileWriter(createTable);
fileWriter.append(s + ";");
return true;
}
return false;
}
}