- 浏览: 458253 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yuan_bin1990:
您好,请问下demo如何运行啊,准备研究研究,但不知道入口啊。 ...
ssh2(struts2+spring2.5+hibernate3.3)自动生成代码程序 -
luyulong:
[b][/b][i][/i][ ...
jQuery进度条插件 jQuery progressBar -
txin0814:
mark..
读取文件目录 -
vurses:
[align=center][color=red][size= ...
include 与 jsp:include区别 -
Roshan2:
http://lijiejava.iteye.com/blog ...
Spring AOP 入门实例
今天同事让我准备一个项目的测试数据,要向一个表中插入上千条记录,并且保证每条记录内容不同,如果用手工一条一条插入肯定是不可能,也不会有哪个SB去做这样的事,我最开始想到了用循环,但要求插入的记录内容不能相同,用循环实现比较麻烦,于是我想到了将记录从文本文件导入至数据库(其实SQLServer可利用sql语句实现导入xls或txt文件,在这就不具体说明了),写个简单的具有解析文本文件并将解析结果插入数据库的类,实现批量插入记录的功能。
1、将数据按一定规律录入到一个文本文件,每一行代表一条记录。
下面是数据库建表SQL:
CREATE TABLE t_FltPsgInfo -- 航班乘客信息
(
FltNum VARCHAR(10), -- 航班号
FltLine VARCHAR(30), -- 航线
FltDate VARCHAR(10), -- 日期
PsgName VARCHAR(30), -- 姓名
PsgType VARCHAR(30), -- 乘客类型,数字表示,目前是1-13
PsgSex VARCHAR(1), -- 0 男 1 女
PsgCab VARCHAR(1), -- 几等舱, F/Y 舱位按字母顺序排列
PsgSeatNo VARCHAR(5),-- 座位号 2A,22F,根据这个得到一排有多少个座位,共有多少排座位信息
PsgInfo VARCHAR(2048) -- 详细信息,可能很长
)
我们将向表t_FltPsgInfo中插入1000条记录。
新建一个文本文件,每一行代表一条记录,如:
HU7804,广州-北京,2007-07-18,谢丽珍,3,1,C,3A,服务保障信息:未用餐随行人员…
其中以“,”作为字段的分隔标志,我们在解析这个文本文件时将根据“,”来拆分字段值。
按照上面的格式,将要插入的数据输入到文本文件中,注意,是每一行代表一条记录,或者你已有从数据库导出的文本文件,那你就只需找到文件的规律,稍作调整就行了。
2、编写Java源码
1》数据库操作类InsertDB.java
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class InsertDB {
private static final String user = "sa";
private static final String pwd = "sa";
private static final String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hhfly";
private static final String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
public static Connection getCon() {
Connection con = null;
try {
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url, user, pwd);
if (con != null) {
System.out.println("你已连接到数据库:" + con.getCatalog());
}
} catch (Exception e) {
System.out.println("连接数据库失败!");
e.printStackTrace();
}
return con;
}
public boolean insertDB(String FltNum, String FltLine, String FltDate,
String PsgName, String PsgType, String PsgSex, String PsgCab,
String PsgSeatNo, String PsgInfo) {
Connection con = null;
Statement stm = null;
boolean flag = false;
String sql = "insert into t_FltPsgInfo values('" + FltNum + "','"
+ FltLine + "','" + FltDate + "','" + PsgName + "','" + PsgType
+ "','" + PsgSex + "','" + PsgCab + "','" + PsgSeatNo + "','"
+ PsgInfo + "')";
try {
con = getCon();
stm = con.createStatement();
int i = stm.executeUpdate(sql);
if (i > 0) {
flag = true;
System.out.println(flag + "插入数据成功!");
}
} catch (Exception e) {
flag = false;
e.printStackTrace();
} finally {
close(null, stm, con);
}
return flag;
}
//关闭相关连接
public void close(ResultSet rs, Statement stm, Connection con) {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
if (stm != null)
try {
stm.close();
} catch (Exception e) {
e.printStackTrace();
}
if (con != null)
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2》数据采集类DataGather.java
package test;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
public class DataGather {
private static final String path = "src/resource/test";
public static final String openFileStyle = "r";
public static final String fieldLimitChar = ",";
public static final int fieldAllCount = 9;
private int count;
private String FltNum;
private String FltLine;
private String FltDate;
private String PsgName;
private String PsgType;
private String PsgSex;
private String PsgCab;
private String PsgSeatNo;
private String PsgInfo;
/*
* 功能:解析文本文件
*/
public void loadFile() {
try {
RandomAccessFile raf = new RandomAccessFile(path, openFileStyle);
String line_record = raf.readLine();
while (line_record != null) {
// 解析每一条记录
parseRecord(line_record);
line_record = raf.readLine();
}
System.out.println("共有合法的记录" + count + "条");
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 功能:具体解析每一条记录,这里可以增加很多对记录的解析判断条件,如是否为字母、
* 数字、email等。
*/
private void parseRecord(String line_record) throws Exception {
//拆分记录
String[] fields = line_record.split(fieldLimitChar);
if (fields.length == fieldAllCount) {
FltNum = tranStr(fields[0]);
FltLine = tranStr(fields[1]);
FltDate = tranStr(fields[2]);
PsgName = tranStr(fields[3]);
PsgType = tranStr(fields[4]);
PsgSex = tranStr(fields[5]);
PsgCab = tranStr(fields[6]);
PsgSeatNo = tranStr(fields[7]);
PsgInfo = tranStr(fields[8]);
System.out.println(FltNum + " " + FltLine + " " + FltDate + " "
+ PsgName + " " + PsgType + " " + PsgSex + " " + PsgCab
+ " " + PsgSeatNo + " " + PsgInfo);
InsertDB db = new InsertDB();
db.insertDB(FltNum, FltLine, FltDate, PsgName, PsgType, PsgSex,
PsgCab, PsgSeatNo, PsgInfo);
count++;
}
}
private String tranStr(String oldstr) {
String newstr = "";
try {
newstr = new String(oldstr.getBytes("ISO-8859-1"), "GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return newstr;
}
}
3》测试类Test.java
package test;
public class Test {
public static void main(String[] args) {
try {
DataGather gather = new DataGather ();
gather.loadFile();
} catch (Exception e) {
e.printStackTrace();
}
}
}
1、将数据按一定规律录入到一个文本文件,每一行代表一条记录。
下面是数据库建表SQL:
CREATE TABLE t_FltPsgInfo -- 航班乘客信息
(
FltNum VARCHAR(10), -- 航班号
FltLine VARCHAR(30), -- 航线
FltDate VARCHAR(10), -- 日期
PsgName VARCHAR(30), -- 姓名
PsgType VARCHAR(30), -- 乘客类型,数字表示,目前是1-13
PsgSex VARCHAR(1), -- 0 男 1 女
PsgCab VARCHAR(1), -- 几等舱, F/Y 舱位按字母顺序排列
PsgSeatNo VARCHAR(5),-- 座位号 2A,22F,根据这个得到一排有多少个座位,共有多少排座位信息
PsgInfo VARCHAR(2048) -- 详细信息,可能很长
)
我们将向表t_FltPsgInfo中插入1000条记录。
新建一个文本文件,每一行代表一条记录,如:
HU7804,广州-北京,2007-07-18,谢丽珍,3,1,C,3A,服务保障信息:未用餐随行人员…
其中以“,”作为字段的分隔标志,我们在解析这个文本文件时将根据“,”来拆分字段值。
按照上面的格式,将要插入的数据输入到文本文件中,注意,是每一行代表一条记录,或者你已有从数据库导出的文本文件,那你就只需找到文件的规律,稍作调整就行了。
2、编写Java源码
1》数据库操作类InsertDB.java
package test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class InsertDB {
private static final String user = "sa";
private static final String pwd = "sa";
private static final String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=hhfly";
private static final String driver = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
public static Connection getCon() {
Connection con = null;
try {
Class.forName(driver).newInstance();
con = DriverManager.getConnection(url, user, pwd);
if (con != null) {
System.out.println("你已连接到数据库:" + con.getCatalog());
}
} catch (Exception e) {
System.out.println("连接数据库失败!");
e.printStackTrace();
}
return con;
}
public boolean insertDB(String FltNum, String FltLine, String FltDate,
String PsgName, String PsgType, String PsgSex, String PsgCab,
String PsgSeatNo, String PsgInfo) {
Connection con = null;
Statement stm = null;
boolean flag = false;
String sql = "insert into t_FltPsgInfo values('" + FltNum + "','"
+ FltLine + "','" + FltDate + "','" + PsgName + "','" + PsgType
+ "','" + PsgSex + "','" + PsgCab + "','" + PsgSeatNo + "','"
+ PsgInfo + "')";
try {
con = getCon();
stm = con.createStatement();
int i = stm.executeUpdate(sql);
if (i > 0) {
flag = true;
System.out.println(flag + "插入数据成功!");
}
} catch (Exception e) {
flag = false;
e.printStackTrace();
} finally {
close(null, stm, con);
}
return flag;
}
//关闭相关连接
public void close(ResultSet rs, Statement stm, Connection con) {
if (rs != null)
try {
rs.close();
} catch (Exception e) {
e.printStackTrace();
}
if (stm != null)
try {
stm.close();
} catch (Exception e) {
e.printStackTrace();
}
if (con != null)
try {
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
2》数据采集类DataGather.java
package test;
import java.io.RandomAccessFile;
import java.io.UnsupportedEncodingException;
public class DataGather {
private static final String path = "src/resource/test";
public static final String openFileStyle = "r";
public static final String fieldLimitChar = ",";
public static final int fieldAllCount = 9;
private int count;
private String FltNum;
private String FltLine;
private String FltDate;
private String PsgName;
private String PsgType;
private String PsgSex;
private String PsgCab;
private String PsgSeatNo;
private String PsgInfo;
/*
* 功能:解析文本文件
*/
public void loadFile() {
try {
RandomAccessFile raf = new RandomAccessFile(path, openFileStyle);
String line_record = raf.readLine();
while (line_record != null) {
// 解析每一条记录
parseRecord(line_record);
line_record = raf.readLine();
}
System.out.println("共有合法的记录" + count + "条");
} catch (Exception e) {
e.printStackTrace();
}
}
/*
* 功能:具体解析每一条记录,这里可以增加很多对记录的解析判断条件,如是否为字母、
* 数字、email等。
*/
private void parseRecord(String line_record) throws Exception {
//拆分记录
String[] fields = line_record.split(fieldLimitChar);
if (fields.length == fieldAllCount) {
FltNum = tranStr(fields[0]);
FltLine = tranStr(fields[1]);
FltDate = tranStr(fields[2]);
PsgName = tranStr(fields[3]);
PsgType = tranStr(fields[4]);
PsgSex = tranStr(fields[5]);
PsgCab = tranStr(fields[6]);
PsgSeatNo = tranStr(fields[7]);
PsgInfo = tranStr(fields[8]);
System.out.println(FltNum + " " + FltLine + " " + FltDate + " "
+ PsgName + " " + PsgType + " " + PsgSex + " " + PsgCab
+ " " + PsgSeatNo + " " + PsgInfo);
InsertDB db = new InsertDB();
db.insertDB(FltNum, FltLine, FltDate, PsgName, PsgType, PsgSex,
PsgCab, PsgSeatNo, PsgInfo);
count++;
}
}
private String tranStr(String oldstr) {
String newstr = "";
try {
newstr = new String(oldstr.getBytes("ISO-8859-1"), "GBK");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return newstr;
}
}
3》测试类Test.java
package test;
public class Test {
public static void main(String[] args) {
try {
DataGather gather = new DataGather ();
gather.loadFile();
} catch (Exception e) {
e.printStackTrace();
}
}
}
发表评论
-
javascript 打印指定区域
2010-11-18 16:34 1558javascript网页html 打印指定区域在一张网页里面, ... -
MyEclipse 8.5 开发环境配置,汉化,Aptana2.0插件,SVN 插件,Flex Builder 3/4 插件安装
2010-10-26 14:27 1523MyEclipse 8.5 开发环境配置,汉化,Aptana2 ... -
java读取properties文件
2010-10-11 13:43 744使用J2SE API读取Properties文件的六种方法 1 ... -
dbcp基本配置和重连配置
2010-09-28 09:29 2631最近在看一些dbcp的相 ... -
JAVA实现文件转移
2010-09-28 09:26 915/** * //1.从旧文件拷贝内容到新文件 ... -
Properties读取类
2010-09-25 14:06 909package cn.feigme.util; ... -
JAVA读写ftp
2010-09-21 16:41 3509import java.io.DataInputStream; ... -
apache tomcat mysql负载均衡和集群
2010-09-14 10:30 1666前言:公司开发了一个网站,估计最高在线人数是3万,并发人数最多 ... -
Flash Builder 4 正式版序列号
2010-09-01 15:51 3921江湖上又出现新的FlashBuilder(Flex4)序列号: ... -
利用 org.apache.commons.io.FileUtils快速读写文件
2010-08-17 10:33 2698利用 org.apache.commons.io.FileUt ... -
netbeans常用快捷键
2010-08-10 16:26 8891、Application应用程序的 ... -
ERWIN7.1注册码
2010-06-23 12:15 1334终于找到ERWIN7.1注册码,也可在ERWIN7.2上注册。 ... -
Java压缩文件zip
2010-06-21 09:42 1108可以使用jdk提供的java.util.zip包的类来进行文件 ... -
文件资源操作
2010-06-16 21:52 10591.访问文件资源 假设有一个文件地位于 ... -
Java Regex To Use
2010-06-16 21:46 784Java代码 /** * 得到 ... -
Java Random and Java Disabuse
2010-06-16 21:46 1096一、Random 1、创建Random ... -
java 线程池
2010-06-16 21:44 11301)threadpool.xml Java代码 ... -
使用ThreadLocal,隔离多个线程之间的共享冲突
2010-06-16 21:29 1512早在Java 1.2推出之时,Java平台中就引入了一个新的 ... -
MyEclipse下开发Web Service
2010-06-16 21:28 1500开发环境 Sun Java 5+ ... -
jexcel使用
2010-06-16 21:23 1419Java代码 package excel.jx ...
相关推荐
介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作典型应用和数据库应用。全书分5篇24章,共计603个实例和603个经验技巧。每个实例都...
#Cals Cals 是一个从 csv 创建 SSTable 的工具,然后您可以使用 sstableloader 将大数据加载到 Cassandra 数据库。 #特征使用模式和控制文件转换 csv 文件支持timeuuid , bigint , decimal , int , text , ...
5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限。 9、报表统计。也可以嵌入其他...
使用导入的数据 导入的数据与Hive 导入大对象 执行导出 深入了解导出 导出与事务 导出和SequenceFile 第16章 实例分析 Hadoop 在Last.fm的应用 Last.fm:社会音乐史上的革命 Hadoop a Last.fm 用Hadoop产生图表 ...
使用导入的数据 导入的数据与Hive 导入大对象 执行导出 深入了解导出 导出与事务 导出和SequenceFile 第16章 实例分析 Hadoop 在Last.fm的应用 Last.fm:社会音乐史上的革命 Hadoop a Last.fm ...
7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6...
7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6...
7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6...
7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6...
22.11 mysqlimport程序(文本导入、批量导入) 22.12 mysqlshow程序(查看信息) 22.13 myisamchk程序(修复MyISAM文件) 22.14 myisampack程序(压缩MyISAM文件) 第23章 MySQL API应用指南 23.1 ...
7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6、...
5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限。 9、报表统计。也可以嵌入其他...
5、导入导出Excel数据,支持xlsx和xls文件。 6、资源管理(菜单管理)。 7、用户管理和部门管理。 8、权限管理。不仅可管理各个功能模块的权限,也可以管理功能模块里的页面按钮权限。 9、报表统计。也可以嵌入其他...
22.11 mysqlimport程序(文本导入、批量导入) 22.12 mysqlshow程序(查看信息) 22.13 myisamchk程序(修复MyISAM文件) 22.14 myisampack程序(压缩MyISAM文件) 第23章 MySQL API应用指南 23.1 ...
7.2.2、使用JSP的page指令导入所需要的JavaBean 7.2.3、使用指令 7.3、JavaBean与表单 7.4、设置属性: 7.4.1、设置指定的属性 7.4.2、指定设置属性的参数 7.4.3、为属性设置具体内容 7.5、取得属性: 7.6、...