、
想把一个大的school文件,按照学生名拆分成一个一个的小文件,每个小文件单独存成一个txt
首先先把需要拆分的所有变量名存成一个txt文件,取名为student_id
//先写一个读取学生姓名的函数
public class GeneTest {
static List<String> getGeneIds(String name) throws Exception {
BufferedReader r = new BufferedReader(
new InputStreamReader(GeneTest.class.getResourceAsStream(name),"UTF-8"));
String line = null;
List<String> ids = new ArrayList<String>();
while((line = r.readLine()) != null) {
ids.add(line.trim());
}
r.close();
return ids;
}
然后在下面读取的代码里面调用这个函数
public static void main(String[] args) throws Exception {
//获取所有需要拆分的变量名student_id
List<String> ids = GeneTest.getGeneIds("student_id.txt");
//读取MySQL指定目录下的文件
//String cmd = "mysql -h127.0.0.1 -P3306 -uroot -p密码 -D数据库名 -e "
String cmd = "mysql -h127.0.0.1 -P3306 -uroot -p123456 -Dschool -e "
//从“school”这个数据库里面读取“class”这张表里面的name,其中f表示将表“class”重命名为f
+ "\"select * from class f where f.name_id='%s' "
//读取的文件拆分到新的文件夹下面,并以学生的名字来命名txt文件
+ "INTO OUTFILE 'G:/student/split/student_%s.txt' "
+ "CHARACTER SET utf8 FIELDS TERMINATED BY ',' "
+ "LINES TERMINATED BY '\\r\\n';\"";
for(String id : ids) {
System.out.println(String.format(cmd, id, id));
}
}
然后运行代码,将运行后的结果粘贴到cmd里面运行,最后在G盘student的split的文件夹里就可以看到每个学生的信息单独拆分成一个txt表