楼主: luosfu

(shell+oacle)牛人们请进,帮忙分析下

[复制链接]
论坛徽章:
1
授权会员
日期:2005-11-08 17:13:39
11#
 楼主| 发表于 2005-8-17 00:07 | 只看该作者
关键的地方是分割文件!

我分割早就完成了,现在是导数据呀

使用道具 举报

回复
招聘 : 运维开发工程师
论坛徽章:
1
会员2006贡献徽章
日期:2006-04-17 13:46:34
12#
发表于 2005-8-17 00:38 | 只看该作者

俺功力还不够!以后少说话!多学习!!

使用道具 举报

回复
招聘 : 系统架构师
论坛徽章:
372
双子座
日期:2015-08-18 12:18:21摩羯座
日期:2015-09-20 17:10:27秀才
日期:2015-09-21 09:46:16秀才
日期:2015-09-21 11:16:42秀才
日期:2015-10-08 17:57:58天枰座
日期:2015-10-28 18:28:29秀才
日期:2015-11-11 09:48:44秀才
日期:2015-11-11 10:07:14秀才
日期:2015-11-11 10:22:49秀才
日期:2015-09-11 10:43:06
13#
发表于 2005-8-17 08:37 | 只看该作者
try external table, this also very fast

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-11-08 17:13:39
14#
 楼主| 发表于 2005-8-17 09:09 | 只看该作者
#全局变量设置
file_path=/oradata5/bill/all
#拆分文件的备份路径
back_path=/oradata5/bill/all/databack
#拆分后的文件存放地
ok_path=/oradata5/bill/all/dataok


for foler in huawei siemens bell hg
do
file_num=`ls $file_path/$foler|wc -l`
        if [ $file_num -ne 0 ]
        then
                for file in `ls $file_path/$foler`
                do
                        for k in 660 661 662 663 668 750 751 752 753 754 755 756 757 758 759 760 762 763 765 766 768 769
                        do
                        awk -F"|" 'BEGIN{OFS="|"}{ if ($3=='"$k"') print $0}' $file_path/$foler/$file >>$ok_path/$foler/$file$k".DAT"
                        done
                #转移拆分文件       
                mv $file_path/$foler/$file $back_path/$foler/$file
                done
        else
        #如果拆分各品牌目录下没有文件,写入入日志
                echo `date`" $foler have'nt file">> $file_path"`date +%Y%m%d`.log"
        fi
done

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-11-08 17:13:39
15#
 楼主| 发表于 2005-8-17 09:15 | 只看该作者
上面是我的分切脚本,昨天晚上想了下,逻辑上跟不上去:
我要跟分切后的
for k in 660 661 662 663 668 750 751 752 753 754 755 756 757 758 759 760 762 763 765 766 768 769
把1000个表跟据表名对应上面数据导入各个不同的表中.且上面数字对应有4个表(也就是一个用户找到对应的用户中后,还要跟据用户找相应的表),哪位牛人最好能够提供相应的脚本..随便写写.

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-11-08 17:13:39
16#
 楼主| 发表于 2005-8-17 10:41 | 只看该作者
最初由 biti_rainy 发布
[B]sqlldr 控制文件中我不知道如何使用变量,但是,我们可以把一些变量做一个 配置表格
循环读这个配置表格去 替换(perl or  sed ) ctl file,然后再根据新的ctl file运行 [/B]


现在考虑使用这种方法,大家有没有好的建议,怎么都是只看不发言的

使用道具 举报

回复
论坛徽章:
0
17#
发表于 2005-8-17 12:44 | 只看该作者
可以把sqlldr的ctl放在一个变量中执行啊

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2005-8-17 15:09 | 只看该作者
我的意是是起码要有三个遁环
最外层是用户
中间是对应的四个表
最里边是历片四个目录下的所有的数据文件
在三个遁环中最重要的是控制数据文件和表的对应关系。
你能说说他们之间有什么规律吗?数据文件=>表

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-11-08 17:13:39
19#
 楼主| 发表于 2005-8-17 15:42 | 只看该作者
好:
先说下:文件规律可以从我的分割脚本看看出:
分割后的文件是跟据 FILE+分割条件命名的,其实这个分割条件就是就是要导入各个用户对应的表中去.
也就是(for k in 20 660 661 662 663 668 750 751 752 753 754 755 756 757 758 759 760 762 763 765 766 768 769)是对应的用户.先实现这一段先:

后面呢再跟据FILE确定导入用户的哪张表中

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-11-08 17:13:39
20#
 楼主| 发表于 2005-8-17 22:33 | 只看该作者
经一个朋友提示思路现在很清楚了
文件 bbbb

表达式                                表名:

^acc[0-9]{8}*                          aabbcc
^rec[0-9]{6}*                          aabbcc
^pps[0-9]{6}*                          aabbcc
^CRO[0-9]{9}*                          aabbcc
^(backup_|x9|x11|x27|*          aabbcc
^[C-D]{1}D[0-9]{8}[0-9]*        aaaaaaaa
^[C-D]{1}L[0-9]{8}[0-9]*        aaaaaaaa
^smr[0-9]{6}[0-9]{7}[0-9]*      aaaaaaaa
^SMS[0-9]{8}_[0-9]{6}*                 ccccccca
^SMGXIN[0-9]{10}*                abcddddd
^SMGXIN[0-9]{10}*                ddbadafd

文件 aaa
用户名:  数字               
dbaguhou 20   
dbashi 660
dbachng 661
dbayaang 662
dbajig 663
dbamag 668
dbajien 750
dbashan 751
dbahuu 752
dbameu 753
dbashu 754
dbashen 755
dbazh 756
dbafo 757
dbazhng 758
dbazhang 759
dbazhhan 760
dbahe 762
dbaqian 763
dbashe 765
dbayu 766
dbachhou 768
dbadouan 769

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表