请教一个关于Oracle数据抽取的问题

asp_sunglow 2007-10-18 01:55:22
Oracle的ETL是否支持将数据抽取到Sql Server或其它关系型数据库?其数据处理能力是否可以达到2G/小时?望高人不吝赐教.感谢!
...全文
409 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
NinGoo 2007-12-02
  • 打赏
  • 举报
回复
OWB好像目标只能是oracle数据库,ODI则可以到异构源,置于性能,ODI是一款ELT概念的ETL工具,它没有自己的执行引擎,都是转化为代码到源或者目标库中执行,所以只要你的数据库性能够好,抽取性能就够好

ODI是Oracle收购的一个工具,简单介绍:http://www.ningoo.net/html/2007/an_introduction_of_oracle_data_integrator.html
limaowa 2007-11-28
  • 打赏
  • 举报
回复
这个速度绝对没有问题
你就用
SPOOL
SELECT
2G顶多只用几分钟
到一个文本文件,然后可以FTP到目标物理机器地址上
然后根据目标数据库的特点装就去就可以了\
SPOOL具体可以查看相关的问题,我有答复过的
给你一段类似的程序,其实很简单的
--检测到没有.ERR文件,那么就说明没有任何报错的文件,不需要做其他处理,直接退出检测,报告多维处理正确
--检测到有.ERR文件,那么就把这几个.err文件读到我的临时文件中,用AWK来分割取到第一个第二个
. /etldata/CRMETL/PARA/public.sh
##配置环境
##这是个环境配置的函数,配置了所有相关的路径,工作日期。
set_env()
{
echo "配置环境 "
workdate=`awk -F= '{if ($1~/WORKDATE/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
etlsh=`awk -F= '{if ($1~/ETLSH/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
etllog=`awk -F= '{if ($1~/ETLLOG/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
etlin=`awk -F= '{if ($1~/ETLIN/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
etlcu=`awk -F= '{if ($1~/ETLCU/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
dbusr=`awk -F= '{if ($1~/DBUSR/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
dbpwd=`awk -F= '{if ($1~/DBPWD/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
esshost=`awk -F= '{if ($1~/ESSHOST/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
essuser=`awk -F= '{if ($1~/ESSUSER/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
esspwd=`awk -F= '{if ($1~/ESSPWD/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
esslog=`awk -F= '{if ($1~/ESSLOG/) print $2} ' /etldata/CRMETL/PARA/etl.cfg`
##这个路径是被ESSADMIN用户写入日志的,所以必须具有写权限
lastmonth=`SubDateM $workdate 28`
echo "lastmonth: "$lastmonth
}


check_err()
(
echo "检查.err文件 "
cd $etlin/$lastmonth;
ls -lrt *.err >err.txt;
echo "取得err.txt文件的行数 "
wc -l err.txt ¦awk '{print $1} ' ¦read a
echo $a


b=1
until [ "$b " -gt "$a " ]
do

v_sDisp=`echo "${v_sDispLine} " ¦awk '{FS= ", ";print $2} '`


line=`sed -n $b 'p ' err.txt`
echo $line
word=`echo "$line " ¦awk '{print $9} '`
echo $word
cube=`echo "$word " ¦awk -F. '{print $1} '`
table=`echo "$word " ¦awk -F. '{print $2} '`
echo $cube
echo $table

##记录运行日志
sqlplus $dbusr/$dbpwd < <!

insert into dgcrm.ess_check(cube_id,table_id) values ( '$cube ', '$table ');
commit;
exit;
!


b=`expr $b + 1`
done


)

############################ 主程序 ############################
set_env
check_err
######################是否有当前进程在运行############

你看就是几个函数之间的调用,把程序层次写清楚点就好了,呵呵,就是在你的EXIT;后面加个!,来退出SQLPLUS,

sanmmu 2007-10-18
  • 打赏
  • 举报
回复
1、与存放DW的数据库系统相同的数据源处理方法

  这一类数源在设计比较容易,一般情况下,DBMS(包括SQLServer,Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。

  2、与DW数据库系统不同的数据源的处理方法。

  这一类数据源一般情况下也可以通过ODBC的方式建立数据库链接,如SQL Server和Oracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls文件,然后再将这些源系统文件导入到ODS中。另外一种方法通过程序接口来完成。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧