`
myhongkongzhen
  • 浏览: 96640 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

ORACLE数据库中插入大字段数据的解决方法

    博客分类:
  • SQL
阅读更多

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);
		}
	}
0
0
分享到:
评论

相关推荐

    jdbc批量插入大字段

    因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC来实现Blob字段的批量插入,以提高性能。 首先,我们需要了解JDBC(Java Database Connectivity),它是Java编程语言与各种数据库之间通信的...

    图片存入Oracle中,用clob和blob两种方式

    Oracle数据库系统支持这两种数据类型,用于存储大量文本数据和二进制数据。下面将详细介绍这两种数据类型以及如何在Oracle中使用它们存储和读取图片。 1. **CLOB数据类型**: `CLOB`数据类型用于存储大量的字符...

    用OO4O操作Oracle数据库的大数据字段 (1).pdf

    在Oracle数据库中,大数据字段通常指的是用来存储大量信息的数据类型,如文档、图像、音频和视频等。这些字段包括BLOB(Binary Large Object)、CLOB(Character Large Object)、NCLOB(National Character Large ...

    Mybatis 处理 CLOB、BLOB 类型数据

    MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型,用于存储大量的数据。 CLOB 类型...

    jsp结合html编辑器FCKeditor对Oracle CLOB大字段操作范例

    接着,建立与Oracle数据库的连接,创建PreparedStatement对象,将内容插入CLOB字段: ```jsp Connection conn = null; PreparedStatement pstmt = null; try { Class.forName("oracle.jdbc.driver.OracleDriver");...

    利用PL/SQL从Oracle数据库导出和导入数据

    在Oracle数据库管理中,PL/SQL Developer是一款强大的集成开发环境,它提供了方便的数据导出和导入功能。本文将详细介绍如何利用PL/SQL Developer从Oracle数据库中导出数据以及将数据导入到数据库中。 首先,我们来...

    数据库对比 Oracle 和 MySQL 的对比 我的数据库认知学习

    选择数据类型的原则包括:选择最简单的类型、最小的数据类型,尽可能避免使用大字段,以及使用 decimal 存储小数。 6. **字段约束** - MySQL 中的非空约束(NOT NULL)、唯一约束(UNIQUE)、外键约束(FOREIGN ...

    fckeditor配置和oracle大字段类型处理

    接下来,我们关注如何在Oracle数据库中处理大字段类型CLOB。Oracle数据库支持多种数据类型,其中CLOB(Character Large Object)用于存储大量字符数据,如长篇文章、HTML代码等。 1. **创建表结构**:在Oracle中...

    解决oracle10以上版本导出空表失败的问题

    1. **插入并删除数据**:对于单个或少量空表,可以直接向表中插入一条数据,然后删除这条数据,这样表就会被系统识别并分配segment,从而能够正常导出。如果需要处理大量空表,可以编写SQL脚本批量执行此操作。 2. ...

    PL_SQL Developer导入导出数据库方法及说明1

    PL/SQL Developer是一款功能强大的Oracle数据库开发工具,支持多种数据库对象的创建、查询、调试等功能,同时提供了便捷的数据导入导出功能。本文将详细介绍如何使用PL/SQL Developer进行数据库的导入导出,并给出...

    oracle四大宝典之4:Oracle性能优化

    Oracle数据库是全球广泛使用的大型关系型数据库管理系统,其性能优化是DBA(数据库管理员)日常工作中至关重要的一环。本篇文章将深入探讨Oracle性能优化的各个方面,以帮助你掌握提升数据库效率的关键技巧。 一、...

    jdbc 处理clob类型字段

    本主题主要探讨如何使用JDBC有效地操作Oracle数据库中的CLOB类型字段,包括插入(Insert)、删除(Delete)、更新(Update)和查询(Select)等操作。 首先,我们需要理解CLOB的基本概念。CLOB是一种数据库对象,...

    spring1.2+hibernate3对大字段的处理实例,供大家学习与交流,可直接运行

    6. **数据库层面的优化**:例如,使用Oracle数据库时,可以优化表结构、索引以及存储过程,以适应大字段的处理。 这个压缩包中的eclipse工程是一个实际的项目示例,你可以通过它来了解和实践上述策略。在实际应用中...

    解析PL/SQL Developer导入导出数据库的方法以及说明

    PL/SQL Developer是一款专为Oracle数据库设计的强大开发工具,它提供了方便的数据库管理、查询、调试和代码编写功能。在数据库的日常维护和迁移过程中,导入导出数据是非常常见的操作,PL/SQL Developer为此提供了...

    vfp6.0系统免费下载

    答案: Knowledge Base 是内容广泛的论文集,覆盖了如何使用产品的各种特性、已知的软件错误及其解决方案或回避的方法、以及其他有助于使用各种 Microsoft 产品的有用信息。通过以下站点可访问整个 Knowledge Base: ...

    java编程教程代码学习

    从给定的文件信息中,我们可以提取到关于Java编程、BBCode使用以及一些与网络论坛相关的标记语言的知识点。下面将详细阐述这些知识点。 ### Java编程教程代码学习 #### Java编程简介 Java是一种广泛使用的高级...

    SQL语句优化之降龙十八掌

    6. **索引应该建在小字段上**:大字段如文本字段的索引不仅占用空间大,而且维护成本高。 7. **复合索引的建立需要进行仔细分析**:复合索引虽然强大,但并非所有情况下都适用,需要结合实际需求进行选择。 8. **...

Global site tag (gtag.js) - Google Analytics