标签:port 定义 encoding setw 运行命令 end 数据格式 编程 dao
Intel(R) Core(TM)i7-7500U CPU @ 2.70GHz 2.90 GHz
RAM 8.00GB
R-3.6.1-win.exe 、Navicat for MySQL 、tbl_stuinfo-data.sql 、eclipse
1) 检查JDK环境
首先对实验机器的java -version 和java进行检查,返回的信息皆正常。但是,在进行javac编译指令的检查时,返回了如图4-1的内容,显示的信息表明javac的环境变量没有配置。
图4-1 javac编译指令不可用
2) 配置JDK的环境变量。
重新配置JDK的系统环境变量。右击桌面的计算机图标选择属性,在左边的控制面板中点击“高级系统设置”。在高级选项卡中再点击“环境变量”,选择系统变量中的Path,并删除path中原有的JDK变量。
在环境变量控制面板中,点击“新建”,变量名为:JAVA_HOME ,变量值为C:\Program Files\Java\jdk1.8.0_91 ,按确定保存。
图4-2 环境变量控制面板
图4-3 配置JAVA_HOME环境变量
再编辑Path ,并在首部追加:%JAVA_HOME%/bin; 内容。
图4-4 Path中添加内容后
重新查看JDK的版本,以及查看编译执行功能是否可用。
图4-5 javac编译功能可用
1) 安装R-3.6.1-win
双击已经下载好的R-3.6.1-win.exe文件,进行安装R语言。依次点击确定或者下一步,保持默认的安装配置即可。如图4-6,是R-3.6.1安装结束的界面,点击关闭。
图4-6 R-3.6.1安装结束
2) 打开R程序。
图4-7,为R-3.6.1程序首次打开的界面。
图4-7 初次打开R
1) 连接数据库
使用Navicat for MySQL连接MySQL数据库前,填完基本的连接信息后,点击测试连接到数据库,如图4-8所示,即为连接前的测试。
图4-8 连接测试
在点击两次确认之后,再上机“本地”即可连接到实验所需的MySQL数据库。
图4-9 连接到MySQL数据库
2) 新建数据库
在“本地”上鼠标右键,选择“新建数据库”,在面板中填入如图4-10的内容,再按确定即可。
图4-10 新建数据库
双击建立好的数据库“student”,并在该数据库名称上右键,选择“运行SQL文件”。找到外部资源的tbl_stuinfo-data.sql文件,点击开始。
图4-11 运行sql脚本
点击关闭,回到Navicat for MySQL主面板。在按F5键刷新界面,会发现student数据库下多出名称为tbl_stuinfo的数据表,双击打开,检查student库的数据是否乱码。如果是乱码,重新建立数据库。
图4-12 数据库初始化成功
至此,便可关闭Navicat for MySQL软件,但必须保持该数据库在后台正常运行。
分别在该项目中新建:MainClass、StudentBean、StudentDao、TestConnection和TxtUtil类。
1) MainClass类
其中MainClass为主类,功能是创建一个dao对象并调用写文件的方法,关键代码如下:
StudentDao dao = new StudentDao(); List<StudentBean> list = dao.findAll(); new TxtUtil().writeToFile(list); |
2) StudentBean类。StudentBean定义学生对象拥有的属性,同时,重写了构造方法。关键代码如下
public StudentBean(Integer stuid, String name, boolean sex, String mobile, Timestamp birthday, String place, String major, String note) { super(); this.stuid = stuid; this.name = name; this.sex = sex; this.mobile = mobile; this.birthday = birthday; this.place = place; this.major = major; this.note = note; } |
3) StudentDao类。该类定义了一个连接对象、执行sq1命令的对象和结果集对象。在预处理sql语句的同时,执行了sql语句,并把结果交给res进行返回。核心代码如下:
pst = conn.prepareStatement(sql); res = pst.executeQuery(); while(res.next()){ Integer stuid = res.getInt("stuid"); String name = res.getString("name"); boolean sex = res.getBoolean("sex"); String mobile = res.getString("mobile"); Timestamp birthday = res.getTimestamp("birthday"); String place = res.getString("place"); String major = res.getString("major"); String note = res.getString("note"); StudentBean studentBean = new StudentBean(stuid,name,sex,mobile,birthday,place,major,note); list.add(studentBean); } |
4) TestConnection类为MySQL数据库连接类。其先加载了驱动程序类,再获取一个连接对象,并返回,最后测试是否连接成功。关键代码如下:
static{ try{ Class.forName("com.mysql.jdbc.Driver"); }catch(Exception ex){ ex.printStackTrace(); } } public static Connection getConnection() throws Exception{ Connection conn=DriverManager.getConnection("jdbc:mysql://172.25.6.200:3306/student?useUnicode=true&characterEncoding=UTF8","root",""); return conn; } public static void main(String[] args) throws Exception{ Connection c=getConnection(); System.out.println("c="+c); c.close(); } |
5) TxtUtil类为工具类,作用是把mysql的数据写入到文本文件中,核心的代码如下:
FileWriter fw=null; BufferedWriter bw=null; try { fw=new FileWriter( new File(OUTFILE) ); bw=new BufferedWriter(fw); bw.write(HEADER); bw.newLine(); for(StudentBean stu:list){ bw.write(stu.getStuid()+FLAG); bw.write(stu.getName()+FLAG); bw.write(stu.isSex()?"男" +FLAG:"女"+FLAG); bw.write(stu.getMobile()+FLAG); bw.write(stu.getBirthday().toString().substring(0, 10)+FLAG); bw.write(stu.getPlace()+FLAG); bw.write(stu.getMajor()+FLAG); bw.write(stu.getNote()); bw.newLine(); } bw.flush(); } catch (Exception e) { e.printStackTrace(); }finally{ try { if(fw != null){fw.close();} } catch (Exception e) { e.printStackTrace(); }}} |
上述的项目代码在eclipse中调试无误之后,便可将生成文件的位置设置为C:\ inputdir目录下,生成的数据文件为studentdata.txt 。
图4-13 选择Runnable JAR file
之后,点击Next> ,将Export destination:位置指定到C:\目录下,保存的文件名为:stu.jar ,再单击Finish即可。至此编写数据获取工具步骤,结束。
在R x64 3.6.1中使用setwd(“C:\”)命令,将R的工作空间指定到C:\目录下。再使用命令shell.exec("jar stu.jar") ,将mysql数据库student中的数据,在C:\ inputdir目录下,生成的studentdata.txt数据文件。如图4-14,为该文件的样式。
图4-14 studentdata.txt
1) 新建程序脚本
打开R x64 3.6.1软件,点击菜单栏的文件->新建程序脚本 。在打开的脚本编辑器中输入相应的脚本内容。之后保存到C:\目录下,为数据清洗.r文件。
2) 脚本内容如下:
inputdir<-"./inputdir" outputdir<-"./outputdir" for(filename in dir(inputdir)){ print(filename) inputpath<-sprintf("%s/%s",inputdir,filename) data<-read.table(inputpath,header=TRUE,sep=",") print("读取的文件数据如下:") cat("-------------------end---------------------\n") cnames<-colnames(data) cnames[cnames=="stuid"]<-"编号" cnames[cnames=="name"]<-"姓名" cnames[cnames=="sex"]<-"性别" cnames[cnames=="mobile"]<-"手机号" cnames[cnames=="birthday"]<-"出生年月日" cnames[cnames=="place"]<-"籍贯" cnames[cnames=="major"]<-"专业" cnames[cnames=="note"]<-"备注" colnames(data)<-cnames data<-data[c("姓名","性别","出生年月日","籍贯")] #print(data,right = FALSE) data<-data[data$籍贯=="广西桂林",] print(data,right = FALSE) outputpath<-sprintf("%s/%s",outputdir,filename) write.table(data,outputpath,row.names=FALSE,sep=",") } |
图4-15 详细注释-数据处理
如图4-16 数据清洗后的studentdata.txt文件
当运行在R语言中,运行命令shell.exec("jar stu.jar") ,会将mysql数据库student中的数据,在C:\ inputdir目录下,生成的studentdata.txt数据文件。如图5-1所示:
图5-1 数据清洗前的数据集
当在R中,运行命令:source("数据清洗.r") 。即,运行编写的数据清洗.r脚本文件,会在C:\outputdir目录下自动生成已经进行数据清洗的studentdata.txt文件。
图5-2 数据清洗后的数据集
两相对比之下,可以得出总结:本实验先是利用编写的stu.jar可执行文件,从mysql数据库student中导出数据集studentdata.txt 。再通过在R语言中编写脚本并运行脚本的方式,将数据集studentdata.txt进行数据清洗操作,并生成了新的studentdata.tx数据文件,本实验顺利完成。
关于本次实验的经验收获和实验总结,可分总结如下:
标签:port 定义 encoding setw 运行命令 end 数据格式 编程 dao
原文地址:https://www.cnblogs.com/Raodi/p/12155285.html