原文出处http://blog.csdn.net/yoyo_yaya/article/details/1494944
这些天一直在试图把一个用Oracle数据库做的项目转换为用msSql2000数据库的,本以为只要把数据库的连接池改改就可以了,没想到事实并没那么简单~ 要改的地方有好多,改了几天,也学了几天,今天又学到一个。
在我的程序中有这样的SQL语句:
sql = "insert into tab_publish_template(id, name, language, content, filename, editor, editime, priority, remark) "
+ " values(" + myId + ","
+ "'" + Common.toSql(myName) + "',"
+ "'" + Common.toSql(myLanguage) + "',"
+ "empty_clob(),"
+ "'N/A',"
+ "'" + Common.toSql(myEditor) + "',"
+ "SYSDATE,"
+ myPriority + ","
+ mySqlRemark
+ ")";
stmt.executeUpdate(sql);
//处理CLOB型数据 --- oracle 数据库
sql = "select content from tab_publish_template where id=" + myId + " for update";
rs = stmt.executeQuery(sql);
if (rs.next())
...{
//oracle.sql.CLOB clob = (oracle.sql.CLOB)rs.getClob("content");
String clob = rs.getString("content");
clob.putString(1, myContent);
sql = "update tab_publish_template set content=? where id=" + myId;
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setClob(1, clob);
pstmt.executeUpdate();
pstmt.close();
}
rs.close();
rs = null;
没有看懂 empty_clob() 这个是干什么的,在原来的oracle 数据库脚本中找到content 字段的类型是 clob 型的,只看脚本,我只能理解是这个字段重要放很多,很长的数据,要足够大,于是就想在sql2000 中找到同样的字段类型,但是很不幸:没得~ 于是就搜了一大堆资料出来~ 最后也看个一知半解得了吧~ 贴上来,给需要的朋友一起讨论。
一、请问clob 和blob是什么意思?
答:1,他们都是oracle数据库中的大对象数据类型,oracle提供专门的包对其操作。
2,blob、clob、nclob 三种大型对象(LOB),用来保存较大的图形文件或带格式的文本文件,如Microsoft Word文档,以及音频、视频等非文本文件,最大长度是4GB。
LOB有几种类型,取决于你使用的字节的类型,Oracle 8i实实在在地将这些数据存储在数据库内部保存。
可以执行读取、存储、写入等特殊操作
CLOB(Character Large Object) 用于存储对应于数据库定义的字符集的字符数据。(类似于long类型)
BLOB(Binary Large Object) 可用来存储无结构的二进制数据。(类似于row和long row)
二、请问LOB的BLOB、CLOB、BFILE有什麽区别,都用在什麽情况?怎样操作?
答:
BLOB ——内部二进制大对象。
CLOB ——内部字符大对象。
NCLOB ——内部定长多字节字符大对象。
BFILE ——外部二进制文件。
LOB 由两部分组成:数据(值)和指向数据的指针(定位器)。尽管值与表自身一起存储,但是一个LOB 列并不包含值,仅有它的定位指针。更进一步,为了使用大对象,程序必须声 明定位器类型的本地变量。你将在本章后面见到P L / S Q L 接口使用定位器如同操作系统的文件 处理一样。当LOB(除了BFILE )被创建时,定位器被存放在列中,值被存放在LOB 段中, LOB 段是在数据库内部表的一部分。当BFILE 被创建时,定位器如同平常一样存储在列中
三、blob和clob最大是多少?还是没有最大限制?
答:它们的最大上限就是4G, Clob可以存储单字节字符数据,Blob可以存储无结构的二进制数据
[附]
不想另开一篇了,就加在这里了,一个关于SQL2000的问题
sql2000中某字段长度不够为何会填上空格?
答:sql2000中char型是固定长度的,如固定长度为10,但是只录入了3个字符,那么剩下7位就要补充空格来填满。如果,你不想让他自动补充空格,可以选用varchar型,这个是实际长度,也很好用,速度也快,PS:oracle中如果可以用varchar2的地方就不要用clob ,因为后者的速度确实不怎么好。
另外,SQLSERVER中,可存储最大容量的字段类型是image类型,最大长度2GB。
分享到:
相关推荐
oracle对大对象类型操作:blob,clob,nclob,bfile
ORACLE中CLOB字段转String类型
JDBC读写Oracle的CLOB字段
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 ...数据类型 参数 描述 char(n) n=1 to 2000字节 定长字符串,n字节长,如果不指定长度,缺省为1个字节长(一个汉字为2字节)
在通过拼组sql语句来实现... 下面就此问题的解决办法,做一下小结: 我们可以通过创建单独的OracleCommand来进行指定的插入,即可获得成功,这里仅介绍插入clob类型的数据,blob与此类似,这里就不介绍了,下面介绍两
支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 导出的数据格式包括纯文本和DMP文件两种。以纯...
支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i+) , BINARY FLOAT, BINARY DOUBLE (10g+) 全面支持LOB字段: 支持CLOB、NCLOB和BLOB CLOB...
5.支持的数据类型包括:NUMBER, CHAR, VARCHAR2, NCHAR,NVARHCAR2, LONG, DATE, RAW, LONG RAW, BLOB, CLOB, TIMESTAMP (9i ) , BINARY FLOAT, BINARY DOUBLE (10g ) 6.全面支持LOB字段:支持CLOB、NCLOB和BLOBCLOB...
》》支持LOB字段(CLOB, NCLOB和BLOB)恢复,并支持同一个表中,不同LOB列使用不同CHUNK SIZE的情况 》》支持多种Big Endian/Little Endian操作平台(AIX/HPUX/SOLARIS/Linux/Windows)数据库数据恢复 》》支持...
LOB数据类型 clob 1~4GB 只能存储字符数据 nclob 1~4GB 保存本地语言字符集数据 blob 1~4GB 以二进制信息保存数据 三、 DDL语言 1. Create table命令 用于创建表。在创建表时,经常会创建该表的主键、外键、唯一...
MyOraDump 是一个程序,它将存储在大多数基本 oracle 类型中的 oracle 数据导出为文本文件,例如可以用于导入其他数据库,例如 MariaDB 和 MySQL。 程序使用OCI用C语言编写,支持数组获取,性能好。 此外还支持 BLOB...
Support of BLOB, CLOB, and NCLOB data types in TUniLoader is improved PostgreSQL data provider Application Name connection option is supported Payload parameter for PostgreSQL notification is ...
- Bug 4918586: National character set datatypes (NCHAR, NVARCHAR2, NCLOB) are converted to the database character set datatypes (CHAR, VARCHAR2, CLOB) in the Run PL/SQL dialog box. Workaround: ...