目标:从文本文件中读取clob数据,并保存到oracle数据库中。
//创建文件流
BufferedReader br = new BufferedReader(new FileReader("D:\\sq.js"));//建立一个文件读取流
String lineContent = "";//用于记录每一行内容的变量
//链接数据库
Class.forName("oracle.jdbc.driver.OracleDriver");//加载oracle数据库驱动
Connection con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "db_qb", "pw123456");
//oracle数据库JDBC链接字符串,其中:orcl是数据库实例名称,db_qb未数据库用户名,pw123456未密码
Statement st = con.createStatement();//给予数据库链接建立sql陈述对象。
System.out.println("数据库链接成功.");
con.setAutoCommit(false);//关闭自动认可模式
//循环从文本文件读出的数据
for (int i = 0; (lineContent = br.readLine()) != null; i++) {
//获得数据
String str =""+lineContent;
int f = str.indexOf("=");
int l = str.length();
String name =str.substring(0,f);//社区id
String border=str.substring(f+1,l);//border
System.out.println(name+"------"+border);
//数据库结构 id number,border clob;
//构造sql语句
String insert ="update tb_gis_community set border=empty_clob() where id='"+name+"'";//首先给border字段插入一个空的clob对象:empty_clob();(不然的话跟新失败)
st.executeUpdate(insert);//执行更新语句
// 锁定数据行进行更新,注意“for update”语句
String update ="select border from tb_gis_community where id ='"+name+"' for update";//然后更新border字段为从文本文件读入的超长的clob值。
ResultSet rs = st.executeQuery(update);//执行更新语句
Writer outStream;//声明一个输出流
if (rs.next()) {
oracle.sql.CLOB clob = (oracle.sql.CLOB) rs.getClob("border");//获得数据中border的值,并强制转换为clob对象
outStream = clob.getCharacterOutputStream();//获得clob对象的字符输出流
String data =border;// 获得从文本文件读取的border值
char[] c = data.toCharArray();//将border转换为字符数组
outStream.write(c, 0, c.length);//clob的字符输出流写入字符数组
outStream.flush();//清空
outStream.close();//关闭输出流
}
}
con.commit();//提交操作
con.close();//关闭数据库链接
目标:从oracle数据库中读取clob数据
String sql ="select t.point_x,t.point_y,t.border as border from gis_pcs_all t where t.pcs_name='"+name+"'";
//数据库结构:point_x number(20,8) x坐标;point_Y number(20,8) y坐标;border clob gis轮廓数据;
ResultSet res = this.executeQuery(sql);//执行查询的sql语句,获得结果集对象
String[] datas = new String[3];//声明一个大小为3的字符串数组,用来盛装结果
int count =0;
try {
if(res.next()){
datas[0] = res.getDouble(1)+"";//x坐标
datas[1] = res.getDouble(2)+"";//y作保
CLOB clob = (CLOB) res.getClob("border");//gis轮廓数据 需要强制转换为club对象,但这是不能够直接使用
if(clob!=null){
char[] chars = new char[(int) clob.length()];//(int)clob.length();//依据club对象大小,创建一个字符数据
//System.out.println(clob.getLength()+":::"+clob.length());//clob.getLength()和clob.length()两个长度不一样,前者大概是后者的两倍,且前者导致方块乱码
clob.getCharacterStream().read(chars); //用字符数组接受clob对象的字符输出流
String content = new String(chars); //根据字符数据实例化字符串对象,java程序可以直接使用了
datas[2] =( content==null?"":content+"");//
System.out.println("clob信息:"+datas[0]+"==="+content);
return datas;
}else{
System.out.println("clob为空");
return null;
}
}
<!-- 日志内容 结束 --><!-- 日志来源 开始 --><!-- 日志来源 结束 --><!-- 日志信息 开始 -->
分享到:
相关推荐
CLOB类型是Oracle数据库中用于存储大量文本数据的数据类型,它可以存储最大为4GB的文本数据。在实际应用中,当需要存储的文章、报告或者XML文档等文本信息超过常规VARCHAR2类型的限制时,CLOB便成为首选。 ### 二、...
在Oracle数据库中,`CLOB`(Character Large Object)是一种用于存储大量文本数据的数据类型。由于其能够存储非常大的文本块(最大可达4GB),因此常被用于存储文章、报告或任何其他大型文本内容。然而,在处理CLOB...
例如,在Oracle数据库中,CLOB可以存储最大为4GB的数据;而在MySQL中,则是使用`LONGTEXT`类型来实现类似的功能。 ### CLOB类型转换需求背景 在实际应用中,由于业务需求的变化或者数据处理的需要,有时候会涉及到...
CLOB是一种用于存储大量字符数据的数据类型,它支持Unicode编码,并且可以存储最大达4GB的数据。与BLOB(Binary Large Object)不同的是,CLOB主要用来存储文本数据。 #### 如何读取CLOB类型的字段 在Java中,读取...
1. CLOB数据类型介绍: - CLOB类型是用来存储最大容量为4GB的单个字符数据,可以是Unicode字符集,支持多种语言。 - 它不同于VARCHAR2,后者限制在4000个字符内,对于超过这个限制的数据,CLOB是理想的选择。 2. ...
CLOB是Oracle数据库用于存储大型文本数据的一种数据类型,它可以存储最大为4GB的字符数据。在处理CLOB数据时,通常会涉及到以下几种常见操作: - 插入CLOB数据 - 更新CLOB数据 - 查询CLOB数据 - 删除CLOB数据 #### ...
Mybatis 处理 CLOB、BLOB 类型数据 MyBatis 处理 CLOB、BLOB 类型数据是指在使用 MyBatis 框架时,如何正确地处理大字段类型的数据。CLOB(Character Large OBject)和 BLOB(Binary Large OBject)都是大字段类型...
CLOB(Character Large OBject)是一种 Oracle 数据库中的数据类型,用于存储大型文本数据。CLOB 类型的字段可以存储大量的文本数据,最大可以达到 4GB。 2. 在 Java 中操作 CLOB 字段 在 Java 中操作 CLOB 字段...
Oracle的Clob数据类型在数据库中用于存储大对象(Large Object),如长文本、XML文档等大量字符数据。在Hibernate框架中,Clob类型的字段处理是数据库操作中的一个关键环节,尤其是在处理大量文本数据时。以下是对...
Oracle数据库同样支持BLOB和CLOB数据类型,但需要特殊配置来处理来自其他数据库的大对象数据。 3. **特殊配置策略**: - **联邦能力**:利用WII的联邦功能,先将DB2中的非BLOB字段复制到Oracle目标表中。 - **...
了解Oracle数据库与.NET数据类型的映射关系对于开发人员来说至关重要,这直接影响到数据的正确存储、检索和处理。以下是对"Oracle与.Net 数据类型映射"这一主题的详细解释。 首先,Oracle数据库提供了一系列的数据...
Oracle数据库在处理大对象(LOB)类型,如Clob(Character Large Object)和Blob(Binary Large Object)时,有时需要专门的工具来进行高效且安全的数据导出。这些字段通常存储大量的文本或二进制数据,比如长篇文档...
CLOB数据类型用于存储大量的文本数据,如XML文档或长篇文章,而BLOB则用于存储二进制大对象,如图片、音频或视频文件。在Oracle中,对这类数据的操作通常需要特定的策略和工具,因为它们的大小和性质不同于常规的...
在进行数据库迁移或数据交换时,需要将不同数据库管理系统之间的数据类型进行转换。在本文中,我们将讨论如何将 SQL Server 中的 Image 类型数据导出到 Oracle 的 CLOB 字段中。 Image 类型在 SQL Server 中的应用 ...
本文主要介绍了在Java中处理Oracle数据库CLOB类型的基本方法,包括CLOB的读写操作、中文编码问题的处理以及一些额外的注意事项。通过这些知识点的学习,可以更高效地完成与Oracle数据库的交互任务。
Oracle数据库中的CLOB(Character Large Object)类型是用来存储大量字符数据的,比如长文本、XML文档等。在Java中,当我们需要通过JDBC(Java Database Connectivity)接口与Oracle数据库交互时,处理CLOB字段可能...
在Oracle数据库环境中,数据类型BLOB(Binary Large Object)用于存储大量的二进制数据,如图像、音频或视频文件,而CLOB(Character Large Object)则用于存储大量文本数据。在某些情况下,可能需要将BLOB类型的...
### Delphi ADO连接Oracle数据库报数据类型不支持处理方式 在使用Delphi结合ADO(ActiveX Data Objects)技术连接Oracle数据库时,开发者可能会遇到一个常见的问题:在成功连接数据库之后进行查询操作时,系统会报...