怎么用Python脚本怎么从oracle数据库中取出clob数据

怎么用Python脚本怎么从oracle数据库中取出clob数据,第1张

stmt = conprepareStatement("select attach,fjmc,piid,swsj from receiveFile ");//attach是clolb对象

rs = stmtexecuteQuery( );

while (rsnext()) {

javasqlBlob blob = rsgetBlob(1);//这一句可获得blob,clob等对象。

然后再把blob转成文件

File file = new File("G:\\XiangMu_dwoa\\数据库文件资料\\aaa");

OutputStream fout = new FileOutputStream(file);

//下面将BLOB数据写入文件

byte[] b = new byte[1024];

int len = 0;

while ( (len = insread(b)) != -1) {

foutwrite(b, 0, len);

你可以参考一下

一、txt文件的数据格式需要按照一个统一的格式组织好。

1、第一行可以是列名,也可以没有列名,直接就是数据。

2、字段之间分隔符可以使用半角逗号(,)、竖线(|)、双竖线(||)等字符。

3、行与行之间用回车分隔,当然也可以用其它字符,不过不好维护,建议用回车。

二、使用datastage的Sequential File Stage,在”File“栏里面。

1、双击Sequential File Stage,在 Output——Properties 里,设置以下分项:

1)File = ##选择数据文件(txt文件)

2)First Line is Column Name = ## 如果数据文件第一行是列名,则选True

2、在 Output——Format 里,根据数据文件的数据格式,设置分隔符,结束符。

3、在 Output——Columns 里,点击”Load“,导入数据文件对应的表结构。

三、点击”View Data“按钮,看能否展示数据文件的数据。如果不行,基本都是上面的步骤没有设置好,要仔细检查。

在做数据库开发的时候,有时候会遇到需要读取Oracle数据库中的clob类型的数据的情况。本着代码复用的目的,写了下面的存储过程:读取数据库中clob字段的数据。

CREATE OR REPLACE PROCEDURE prc_read_clob(

table_name IN VARCHAR2,

clob_column_name IN VARCHAR2,

primary_Key_Column_names IN VARCHAR2,

primary_key_values IN VARCHAR2,

offset_i IN NUMBER,

read_length_i IN NUMBER,

RES OUT VARCHAR2,

total_length OUT NUMBER

) AS

/

Autor:Hanks_gao

Create Date:2008/12/10

Description:This procedure is to read clob value by conditions

--------------------------------------------------------------

-----------------Parameters descritption----------------------

table_name : The table that contains clob/blob columns(表名)

clob_column_name : Clob/blob column name of table_name(类型为clob的字段名)

primary_key_column_names : The columns seperated by '}' that can fix only one row data (that is primary key) (主键名,以'}'分隔的字符串)

primary_key_values : The primary keyes values that seperated by '}'(主键键值,以'}'分隔的字符串)

offset_i : The offset of reading clob data(要读取的位移量)

read_length_i : The length of reading clob data per times(要读取的长度)

res : Return value that can be referenced by application(读取的结果)

total_length : The total length of readed clob data(数据库查询到的clob数据的总长度)

-----------------End Parameters descritption------------------

/

tmpPrimaryKeys VARCHAR2(2000); --To save primary_Key_Column_names temporarily(暂存主键,主键是以'}'分隔的字符串)

tmpPrimaryKeyValues VARCHAR2(2000); --To save primary_key_values temporarily(暂存主键键值,以'}'分隔的字符串)

i NUMBER; --循环控制变量

tmpReadLength NUMBER; --暂存要读取的长度

sqlStr VARCHAR2(6000); --Query string(查询字符串)

sqlCon VARCHAR2(5000); --Query condition(查询条件)

TYPE tmparray IS TABLE OF VARCHAR2(5000) INDEX BY BINARY_INTEGER;

arrayPrimaryKeys tmparray; --To save the analyse result of primary_Key_Column_names (暂存分析后得到的主键名)

arrayPrimaryKeyValues tmparray; --To save the analyse result of primary_key_values(暂存分析后得到的主键键值)

BEGIN

total_length := 0;

RES := '';

DECLARE

clobvar CLOB := EMPTY_CLOB;

BEGIN

tmpPrimaryKeys:=primary_Key_Column_names;

tmpPrimaryKeyValues:=primary_key_values;

i:=0;

WHILE INSTR(tmpPrimaryKeys,'}')>0 LOOP --Analyse the column names of primary key(将主键分开,相当于arrayPrimaryKeys =tmpPrimaryKeyssplit("}") )

arrayPrimaryKeys(i):=subSTR(tmpPrimaryKeys,1,(INSTR(tmpPrimaryKeys,'}')-1));

tmpPrimaryKeys:=subSTR(tmpPrimaryKeys,(INSTR(tmpPrimaryKeys,'}')+1));

i:=i+1;

END LOOP;

i:=0;

WHILE INSTR(tmpPrimaryKeyValues,'}')>0 LOOP --Analyse the values of primary key

arrayPrimaryKeyValues(i):=subSTR(tmpPrimaryKeyValues,1,(INSTR(tmpPrimaryKeyValues,'}')-1));

tmpPrimaryKeyValues:=subSTR(tmpPrimaryKeyValues,(INSTR(tmpPrimaryKeyValues,'}')+1));

i:=i+1;

END LOOP;

IF arrayPrimaryKeysCOUNT()<>arrayPrimaryKeyValuesCOUNT() THEN --判断键与键值是否能匹配起来

res:='KEY-VALUE NOT MATCH';

RETURN;

END IF;

i := 0;

sqlCon := '';

WHILE i < arrayPrimaryKeysCOUNT() LOOP

sqlCon := sqlCon || ' AND ' || arrayPrimaryKeys(i) || '='''

|| replace(arrayPrimaryKeyValues(i),'''','''''') || '''';

i := i + 1;

END LOOP;

sqlStr := 'SELECT ' || clob_column_name || ' FROM ' || table_name

|| ' WHERE 1=1 ' || sqlCon || ' AND ROWNUM = 1' ; --组查询字符串

dbms_lobcreatetemporary(clobvar, TRUE);

dbms_lobOPEN(clobvar, dbms_loblob_readwrite);

EXECUTE IMMEDIATE TRIM(sqlStr) INTO clobvar; --执行查询

IF offset_i <= 1 THEN

total_length:=dbms_lobgetlength(clobvar);

END IF;

IF read_length_i <=0 THEN

tmpReadLength := 4000;

ELSE

tmpReadLength := read_length_i;

END IF;

dbms_lobREAD(clobvar,tmpReadLength,offset_i,res); --读取数据

IF dbms_lobISOPEN(clobvar)=1 THEN

dbms_lobCLOSE(clobvar);

END IF;

END;

EXCEPTION

WHEN OTHERS THEN

res:='';

total_length:=0;

END;

以上就是关于怎么用Python脚本怎么从oracle数据库中取出clob数据全部的内容,包括:怎么用Python脚本怎么从oracle数据库中取出clob数据、DATASTAGE抽取ORACLE的BLOB,CLOB字段怎么抽、oracle如何 *** 作clob数据类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9520290.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存