Chinaunix首页 | 论坛 | 博客
  • 博客访问: 407703
  • 博文数量: 51
  • 博客积分: 2030
  • 博客等级: 大尉
  • 技术积分: 1109
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-15 08:11
文章分类

全部博文(51)

文章存档

2022年(1)

2016年(2)

2015年(1)

2014年(2)

2013年(4)

2011年(9)

2010年(2)

2009年(5)

2008年(14)

2007年(11)

我的朋友

分类: LINUX

2011-03-14 12:52:29

最近在做一个项目,要把项目现场的数据全部导入到家里的开发库中,统计了一下现场发回来的表文件,一共是1287个。也就是要导入到1287个表中。这样的工作量,当然要让程序来做。人做实在是受不了。发回来的文件也是用bcp导出来的,文件名和表名是一样的,多了个后缀.dat.于是就写了个 shell 脚本:

#!/bin/sh

#把要导入的文件放到list中,且顾虑掉文件大小为0的文件。
list=`ls -l|grep -v grep|grep -v 0|grep -v export.sh|sort -n|awk {'print $9'}`
SUCCESS=0
 
for arg in ${list}
do
        len=${#arg} #get string len
        tab=${arg:0:len-4} #get filename not include extend name

#错误信息都写入当前目录的err.txt文件里
        echo "bcp ${tab}  in /opt/sybase/sdb/ln_data/${arg} -Uname -Ppwd -Sserver -c -t'||' -r'&&\n' -b10 >>./err.txt 2>&1"
        `bcp ${tab}  in /opt/sybase/sdb/ln_data/${arg} -Unms -Penetmanager -SSYBASE -c -t'||' -r'&&\n' -b10 >>./err.txt 2>&1`
        if [ "$?" -eq ${SUCCESS} ];then
                echo "success"
        else
                echo "$arg bcp failed"

                #记录下导入失败的表名
                `echo $tab>>./failtab.list`
        fi
 
        sleep 1
done

可在导入时总是出现下面的错误信息而使得表导入失败

You cannot run the non-logged version of bulk copy in this database. Please......

查了一下相关的资料说可能是数据库的批量拷贝功能没有开通,于是用sa登录数据库,打开这个开关

isql -Usa -Ppwd -Sserver

sp_dboption  dbname,bulkcopy,ture

go

再执行导入脚本,果然都可以成功导入了。经过近3个小的导入,总算完成了这项艰巨的任务。shell脚本真是很强悍,sybase 也很牛啊,感叹

阅读(3086) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2011-03-27 15:26:00

很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com