关于oracle clob字段 通过sqlplus 导入数据库
第一步 先查询 数据库的字符集
select userenv('language') from dual;
USERENV('LANGUAGE')
----------------------------------------------------
AMERICAN_AMERICA.ZHS16GBK
要设置服务器的字符集编码
vi .bash_profile
export LANG=en_US.UTF-8
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
保存退出
编译环境变量
source .bash_profile
在服务器有该文件目录 然后可以上传一个文件,比如 shell.txt
sqlplus 登录oracle
创建一个表
create table clobtest(col1 cLOB);
说明 col1 是一个字段名称
创建一个当前目录 在sqlplus下面创建 这个目录 在服务器是实际路径的目录
create directory dir_test as '/oradata';
set heading off
set line 1000
set long 50000
declare
a_clob CLOB;
bfile_name BFILE := BFILENAME('DIR_TEST','shell.txt');
begin
insert into clobtest values (empty_clob())
returning col1 into a_clob;
dbms_lob.fileopen(bfile_name);
dbms_lob.loadfromfile(a_clob, bfile_name, dbms_lob.getlength(bfile_name));
dbms_lob.fileclose(bfile_name);
commit;
end;
/
执行
查询 select * from clobtest;
select dbms_lob.substr(col1,20) from clobtest ;
如果是乱码
请删除数据
delete from clobtest;
commit;
可以使用
declare
v_clob clob;
bfil bfile :=bfilename('DIR_TEST','shell.txt');
dest_offset number :=1;
source_offset number :=1;
src_csid number :=NLS_CHARSET_ID('UTF8');
lang_ctx integer :=DBMS_LOB.DEFAULT_LANG_CTX;
warn integer;
begin
insert into clobtest values (empty_clob())
returning col1 into v_clob;
dbms_lob.fileopen(bfil);
DBMS_LOB.LOADCLOBFROMFILE(v_clob,bfil,DBMS_LOB.LOBMAXSIZE,dest_offset,source_offset,src_csid,lang_ctx,warn);
dbms_lob.fileclose(bfil);
commit;
end;
这个语句导入。
本文档是参考http://www.oracleplus.net/arch/155.html 以及其他文档结合而成