今天同事让我准备一个项目的测试数据,要向一个表中插入上千条记录,并且保证每条记录内容不同,如果用手工一条一条插入肯定是不可能,也不会有哪个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();
}
}
}
运行测试类,得到结果:
向数据库插入数据成功!
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jojoy_828/archive/2007/12/01/1911236.aspx
分享到:
相关推荐
在这个场景下,"java把文本文件内容导入到数据库"是一个典型的应用,它涉及到文本解析、数据库连接以及数据持久化等关键知识点。 首先,我们需要理解文本文件的格式。描述中提到文件内容的字段由“,”分隔,这种...
可以通过编程语言的文件过滤器(如Java的`FilenameFilter`或Python的`glob`模块)筛选出txt文件,然后用正则表达式或其他解析工具提取数据,准备导入数据库。 "结束后迁移到指定的bak目录下"是文件迁移操作,用于...
在IT行业中,批量读取文本文件(如TXT文件)并将其数据导入到数据库是一项常见的任务,特别是在处理大量数据时。这个“批量读取txt文件导入数据库Demo实例”可能是一个示例程序,展示了如何高效地完成这项工作。下面...
本项目关注的是如何使用Java来实现读取Microsoft Word文件,并将其中的数据上传到数据库,以此提升数据录入的效率。这一过程涉及到多个技术点,包括文件I/O、Word文档解析、数据库操作以及可能的数据转换。 首先,...
10. **自动化工具**:除了手动编写SQL语句,还可以利用数据库管理工具(如MySQL Workbench、pgAdmin等)或编程语言(Python的pandas库,Java的JDBC等)实现数据导入的自动化。 总的来说,批量导入数据库数据是一个...
在IT行业中,定时任务是常见的自动化操作,而本项目的核心在于定时读取PDF文件并将其内容批量插入到数据库。这个任务涉及到多个技术点,包括线程管理、PDF处理、数据库操作以及工具类的设计。以下是对这些知识点的...
以下是一个关于如何从文本批量读取数据到MySQL数据库,并将文件名作为一列添加进去的详细步骤。 首先,确保你已经安装了MySQL数据库服务,并且有相应的数据库和表结构来存储这些数据。例如,你可以创建一个名为`...
这个工具不仅能够将Excel数据批量导入到MySQL数据库中,而且如果数据库中已经存在相同的数据,它还会进行更新,而不是简单地覆盖或者抛出错误。这对于数据分析、数据同步或数据维护等场景非常实用。 首先,我们要...
3. **数据导入准备**:使用Excel的“数据”菜单,选择“从文本/CSV”或“获取数据”功能,将Excel文件转换为CSV格式,因为大多数数据库系统支持直接导入CSV文件。 4. **使用SQL命令**: - `INSERT INTO`:这是最...
Java 解析 XML 并导入数据库是指使用 Java 语言将 XML 文件解析并将其内容导入到数据库中。下面是使用 DOM4J 库来实现此功能的相关知识点: 一、XML 文件解析 XML(Extensible Markup Language)是一种标记语言,...
首先,批量导入数据库记录通常涉及到大量数据的快速输入,这在数据迁移、数据整合或数据分析时非常常见。有多种方法可以实现这一目标: 1. **使用SQL命令**:对于支持SQL语句的数据库(如MySQL、PostgreSQL、SQL ...
在IT行业中,Excel批量导入数据库是一项常见的数据处理任务,尤其在企业后台管理系统中,它能够高效地处理大量数据,提高工作效率。本知识点主要涉及以下几个方面: 1. **Excel数据处理**:Excel是一款强大的电子...
Java多线程读取大文本文件并批量插入MongoDB的代码,文本文件,csv文件,可以结合POI改造使其支持excel。 适合做大量文本数据或日志文件入库的场景,大文本被拆分成多个线程处理,速度快。 批量插入MongoDB,存在则...
1. **转换数据类型**:在Excel中,将列的数据类型改为“文本”可以暂时解决,但这并不适用于所有情况,尤其是当数据需要导入数据库时。 2. **拆分数据**:在编程环境中,可以将超长文本拆分为多个字段,或者在数据库...
本文将详细介绍如何使用Java语言实现从数据库导出数据到TXT文件的功能,这不仅适用于简单的文本导出场景,还能够为更复杂的批量数据处理提供解决方案。 #### 一、理解需求与目标 根据题目提供的信息,“使用Java把...
在标题“csv导入数据库 java源代码”中,我们可以理解这是一个关于使用Java编程语言将CSV文件中的数据批量导入到数据库的应用场景。这个过程通常涉及以下几个关键知识点: 1. **CSV文件读取**:Java中可以使用`...
为了将文本文件中的数据批量导入到数据库中,我们编写了一个Java类`InsertDB`。该类实现了以下功能: 1. **数据库连接**:通过JDBC建立与数据库的连接。 2. **执行SQL语句**:构建并执行插入数据的SQL语句。 ##### ...
这个过程通常涉及两个主要步骤:首先使用Java读取Excel文件中的数据,然后将这些数据写入MySQL数据库。以下是一个详细的步骤说明: 1. **读取Excel文件**: Java提供了多种库来处理Excel文件,例如JXL、Apache POI...
在Java编程中,处理文本文件和XML数据是常见的任务,特别是在需要将这些数据存储到数据库时。本篇文章将深入探讨如何解析TXT文件中的XML数据并将其有效地导入到数据库。 首先,我们要理解TXT文件中XML的基本结构。...
在这个实例中,我们将探讨如何利用PageOffice和其FileMaker标签控件在Java环境中实现Word文件的批量生成。 首先,PageOffice是一个集成在Java应用中的Office文档处理工具,它允许开发者直接在Web浏览器中打开、编辑...