2009年7月2日 天气晴 周四
解决向ORACLE数据库表中大字段(BLOB类型)插入字符数据的方法:(完整代码下载在附件
)
// 对应文章导入
public static void MysqlarchiveToOracleAracle() {
// log.debug("文章导入中...");
String sql = "select * from archive where 1=1";
try {
mysqlStmt = mysqlConn.prepareStatement(sql);
mysqlRs = mysqlStmt.executeQuery();
// List<Archive> archiveList = new ArrayList<Archive>();
Set<String> archiveBodyList = new HashSet<String>();
oracleConn.setAutoCommit(false);
while (mysqlRs.next()) {
archive = new Archive();
// 文章导入
String osql = "insert into archive values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
oracleStmt = oracleConn.prepareStatement(osql);
oracleStmt.setInt(1, mysqlRs.getInt("id"));
oracleStmt.setInt(2, mysqlRs.getInt("typeid"));
oracleStmt.setString(3, mysqlRs.getString("typeid2"));
oracleStmt.setString(4, mysqlRs.getString("title"));
oracleStmt.setString(5, mysqlRs.getString("shorttitle"));
oracleStmt.setString(6, mysqlRs.getString("color"));
oracleStmt.setInt(7, mysqlRs.getInt("sortrank"));
oracleStmt.setInt(8, mysqlRs.getInt("commend"));
oracleStmt.setInt(9, mysqlRs.getInt("ishtml"));
oracleStmt.setString(10, mysqlRs.getString("html"));
oracleStmt.setString(11, mysqlRs.getString("litpic"));
oracleStmt.setString(12, mysqlRs.getString("summary"));
oracleStmt.setString(13, mysqlRs.getString("keyword"));
oracleStmt.setString(14, mysqlRs.getString("template"));
oracleStmt.setString(15, mysqlRs.getString("sender"));
oracleStmt.setTimestamp(16, mysqlRs.getTimestamp("sendtime"));
oracleStmt.setString(17, mysqlRs.getString("source"));
oracleStmt.setString(18, mysqlRs.getString("author"));
oracleStmt.setTimestamp(19, mysqlRs.getTimestamp("publictime"));
oracleStmt.setTimestamp(20, mysqlRs.getTimestamp("visittime"));
oracleStmt.setInt(21, mysqlRs.getInt("click"));
// 处理大字段
// archiveBodyList.add(mysqlRs.getString("body"));
oracleStmt.setBlob(22, oracle.sql.BLOB.getEmptyBLOB());
// java.sql.Blob body = g.sql.SQLHelper.createBlob(mysqlRs
// .getString("body").getBytes("UTF-8"));
// oracleStmt.setBlob(22, body);
oracleStmt.setInt(23, mysqlRs.getInt("ischecked"));
oracleStmt.executeQuery();
// 更新大字段数据
PreparedStatement pstmt = null;
ResultSet rs;
String query = "select body from archive where id=? for update";
pstmt = oracleConn.prepareStatement(query);
pstmt.setInt(1, mysqlRs.getInt("id"));
rs = pstmt.executeQuery();
oracle.sql.BLOB blobtt = null;
if (rs.next()) {
blobtt = (oracle.sql.BLOB) rs.getBlob(1);
}
OutputStream out = blobtt.setBinaryStream(1); // 建立输出流
java.sql.Blob body = g.sql.SQLHelper.createBlob(mysqlRs
.getString("body").getBytes("UTF-8"));
out.write(body
.getBytes(1, Integer.parseInt(body.length() + "")));
out.close();
rs.close();
pstmt.close();
// 重新更新大字段数据
pstmt = null;
pstmt = oracleConn
.prepareStatement(" update archive set body=? where id=? ");
pstmt.setBlob(1, blobtt);
pstmt.setInt(2, mysqlRs.getInt("id"));
pstmt.executeUpdate();
pstmt.close();
log.debug("插入完成ID : " + mysqlRs.getInt("id"));
}
oracleConn.commit();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
replace(mysqlRs, mysqlStmt, mysqlConn);
replace(oracleRs, oracleStmt, oracleConn);
}
}
分享到:
相关推荐
因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...
Oracle数据库系统支持这两种数据类型,用于存储大量文本数据和二进制数据。下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符...
在Oracle数据库中,大数据字段通常指的是用来存储大量信息的数据类型,如文档、图像、音频和视频等。这些字段包括BLOB(Binary Large Object)、CLOB(Character Large Object)、NCLOB(National Character Large ...
MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型,用于存储大量的数据。 CLOB 类型...
接着,建立与Oracle数据库的连接,创建PreparedStatement对象,将内容插入CLOB字段: ```jsp Connection conn = null; PreparedStatement pstmt = null; try { Class.forName("oracle.jdbc.driver.OracleDriver");...
在Oracle数据库管理中,PL/SQL Developer是一款强大的集成开发环境,它提供了方便的数据导出和导入功能。本文将详细介绍如何利用PL/SQL Developer从Oracle数据库中导出数据以及将数据导入到数据库中。 首先,我们来...
选择数据类型的原则包括:选择最简单的类型、最小的数据类型,尽可能避免使用大字段,以及使用 decimal 存储小数。 6. **字段约束** - MySQL 中的非空约束(NOT NULL)、唯一约束(UNIQUE)、外键约束(FOREIGN ...
接下来,我们关注如何在Oracle数据库中处理大字段类型CLOB。Oracle数据库支持多种数据类型,其中CLOB(Character Large Object)用于存储大量字符数据,如长篇文章、HTML代码等。 1. **创建表结构**:在Oracle中...
1. **插入并删除数据**:对于单个或少量空表,可以直接向表中插入一条数据,然后删除这条数据,这样表就会被系统识别并分配segment,从而能够正常导出。如果需要处理大量空表,可以编写SQL脚本批量执行此操作。 2. ...
PL/SQL Developer是一款功能强大的Oracle数据库开发工具,支持多种数据库对象的创建、查询、调试等功能,同时提供了便捷的数据导入导出功能。本文将详细介绍如何使用PL/SQL Developer进行数据库的导入导出,并给出...
Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其性能优化是DBA(数据库管理员)日常工作中至关重要的一环。本篇文章将深入探讨Oracle性能优化的各个方面,以帮助你掌握提升数据库效率的关键技巧。 一、...
本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)等操作。 首先,我们需要理解CLOB的基本概念。CLOB是一种数据库对象,...
6. **数据库层面的优化**:例如,使用Oracle数据库时,可以优化表结构、索引以及存储过程,以适应大字段的处理。 这个压缩包中的eclipse工程是一个实际的项目示例,你可以通过它来了解和实践上述策略。在实际应用中...
PL/SQL Developer是一款专为Oracle数据库设计的强大开发工具,它提供了方便的数据库管理、查询、调试和代码编写功能。在数据库的日常维护和迁移过程中,导入导出数据是非常常见的操作,PL/SQL Developer为此提供了...
答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: ...
从给定的文件信息中,我们可以提取到关于Java编程、BBCode使用以及一些与网络论坛相关的标记语言的知识点。下面将详细阐述这些知识点。 ### Java编程教程代码学习 #### Java编程简介 Java是一种广泛使用的高级...
6. **索引应该建在小字段上**:大字段如文本字段的索引不仅占用空间大,而且维护成本高。 7. **复合索引的建立需要进行仔细分析**:复合索引虽然强大,但并非所有情况下都适用,需要结合实际需求进行选择。 8. **...