我现在做一个BI项目的ETL部分,就是把ORACLE中的数据导出成一个文件,然后在导入DB2数据库
现在在抽取ORACLE数据导出成一个文件时遇到了问题
这个抽取程序我是用C语言编写,用的是ORACLE的OCI函数
具体导出原理如下
比如ORACLE中一个表,表名为tb1,其中有两个字段a,b
在程序里,会拼成这样一个SQL语句
select a||' '||b from tb1
字段之间用TAB键分隔,||' '||为一个TAB
然后根据这个SQL使用OCI函数把这个表里的数据导出成一个文件
现在遇到的问题是,当遇到某条记录对应的所有字段长度总和大于4096字节时,即比如a||' '||b 超过4096字节时,
抽取就会中断,这条记录后面的记录就无法在导出了
在PL/SQL也会出现这个问题,当用select a||' '||b from tb1
这条语句查询时,遇到某条记录长度之和大于4096.即比如a||' '||b 大于4096时,后面的数据就不在显示了
请教高手,这个问题该如何解决?好像ORACLE对查询中的单个字段的长度大小限制就是4096字节吧
现在在抽取ORACLE数据导出成一个文件时遇到了问题
这个抽取程序我是用C语言编写,用的是ORACLE的OCI函数
具体导出原理如下
比如ORACLE中一个表,表名为tb1,其中有两个字段a,b
在程序里,会拼成这样一个SQL语句
select a||' '||b from tb1
字段之间用TAB键分隔,||' '||为一个TAB
然后根据这个SQL使用OCI函数把这个表里的数据导出成一个文件
现在遇到的问题是,当遇到某条记录对应的所有字段长度总和大于4096字节时,即比如a||' '||b 超过4096字节时,
抽取就会中断,这条记录后面的记录就无法在导出了
在PL/SQL也会出现这个问题,当用select a||' '||b from tb1
这条语句查询时,遇到某条记录长度之和大于4096.即比如a||' '||b 大于4096时,后面的数据就不在显示了
请教高手,这个问题该如何解决?好像ORACLE对查询中的单个字段的长度大小限制就是4096字节吧
但是如果在plsql存储过程或者函数之类的程序里面 字符串的长度是大概是4万 所以一般不会出现限制
只不过,那个字符串的值你在表面看不到 其实他还是起作用的