转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
送个数据导出导入脚本给各位(怎么无人喝彩 )         ★★★★

送个数据导出导入脚本给各位(怎么无人喝彩 )

作者:闵涛 文章来源:闵涛的学习笔记 点击数:852 更新时间:2009/4/22 23:09:46

送个 shell for Sco Unix 5.05 脚本给各位,
可在 sybase 用户下创建,将其命名为 bcpoutdata 。
然后 chmod a+x bcpoutdata
在 sybase 用户下运行 bcpoutdata 即可。
注:
1)将 database_name 改为你的数据库名。
2)将 pas 改为你的 sa 口令。
3)将 server 改为你的 SQL server 名。
4)要导入,将 out 改为 in 即可。
最后提醒你,别忘了要在 sybase 用户下创建一个目录,
把 bcpoutdata 置入其中,再运行。
什麽?你要打包、压缩。
哈,在后面加几条:
tar cvf data.tar *.bcp
compress data.tar
rm *.bcp
愿各位好运

isql -Usa -Ppas -Sserver -otables.tmp <<-EOF
USE database_name
GO
SELECT name FROM sysobjects WHERE type='U' ORDER BY name
GO
exit
EOF
vi tables.tmp <<EOF 2>/dev/null
:1,2 d
:$ d
:1,$ <<<
: x
EOF
total=`cat tables.tmp|wc -l`
current=0
for table in `cat tables.tmp`
do
current=$current+1
echo "*** $current/$total bcpout $table ***"
bcp database_name..$table out $table.bcp -Usa -Ppas -Sserver -Jiso_1 -c
echo "*** $table done ***\n"
done
rm tables.tmp

 chenfeng825 回复于:2003-08-22 11:18:18 不错,很有用!

 Blackrose 回复于:2003-08-22 12:27:37 不错

shell 比较熟悉 在 unix 上真是 如虎添翼.........

 li2002 回复于:2003-08-25 10:15:25 问一句:vi中的
:1,$ <<< 
是什么意思??

 yoof 回复于:2003-08-25 14:17:54 1,2 d 
:$ d 
:1,$ <<< 


分别是什么意思???   请楼主详细说明一下   还用它们的用法

 newnewhua 回复于:2003-08-28 00:06:50 各位高手,能解释一下:
vi tables.tmp <<EOF 2>/dev/null 
:1,2 d 
:$ d 
:1,$ <<< 
: x 
EOF 

是什么意思吗?

 钟鼓柳 回复于:2003-08-28 09:26:40 觉得如果某表含加密字段,用上述方法倒出,没问题,但是导入后,恐怕不能用啊!
各位有人试过么?

 noabc 回复于:2003-08-28 21:39:05 bcp 选项用 -n,要不你也许会遇到问题

 hu1234567890 回复于:2003-09-04 21:33:52 首先感谢诸位对此文的兴趣,现解释如下:
一、导出用户数据库中的表,将其置入文件 tables.tmp 中。

isql -Usa -Ppas -Sserver -otables.tmp <<-EOF 
USE database_name 
GO 
SELECT name FROM sysobjects WHERE type='U' ORDER BY name 
GO 
exit 
EOF

二、编辑 tables.tmp ,因 tables.tmp 中首两行和末三行,
是我们不要的东西。前次的有小小错,现更正如下:

vi tables.tmp <<EOF 2>/dev/null 
:1,2 d      (删首两行)
:$          (到末行)
:-2,. d     (删末三行)
:1,$ <<<    (清各行左侧空格,即各行顶左。当然一个 < 也够用,1,$ 也可换成 % )
: x 
EOF

至如 <<EOF ... ... EOF ,批处理执行时,我们要屏蔽一些东西,
使它们不在屏上显示,哈哈、、、就用它了。
找本书看看,再在 SHELL 下,带 <<EOF ... ... EOF 项或不带该项
键入上述脚本,你就会有收获的。EOF 可用其他字母,但前后必须一致。

三、导出用户数据库各表中的数据

total=`cat tables.tmp|wc -l`    (总表数) 
current=0                       (当前的第 n 张表)
for table in `cat tables.tmp`   (将文件 tables.tmp 中的表名依次赋给 table)
do 
current=$current+1 
echo "*** $current/$total bcpout $table ***" 
bcp database_name..$table out $table.bcp -Usa -Ppas -Sserver -Jiso_1 -c 
echo "*** $table done ***\n" 
done 
rm tables.tmp

 pengxb 回复于:2003-09-05 13:35:43 不错!将-c换成-n就更完美了!(有money子段的表,加-n会避免一些应用上的问题)

 Eisen 回复于:2003-09-05 14:12:40 还是有点问题——在通导的时候,遇上有identity字段的表,如何处理那个-E参数呢?

 zhangyh123 回复于:2003-09-05 15:17:39 不错 。另外,对于 text 或者 imag 列 好象没有处理,
如果有分区表,那就更要改不少了
看来 还是要手工调整一些东东 。

 hu1234567890 回复于:2003-09-05 19:13:08 这是鄙人工作之谈中的少少部分,放入此意在抛砖引玉。
用此结构可作许多变通,如:

1、
truncate table
update statistics

2、
按条件备份部分数据,这样首先你要对 tables.tmp 编辑,加
入要检索的字段如:

表名1:字段名
表名2:字段名
... ...

其次要用到select into  from
再次修改 for ... ... done 中的脚本,加入一些东西,
如:
echo $table > tables.tmp
table1=`cut -f1, -d: tables.tmp`
table2=`cut -f2, -d: tables.tmp`

3、还可在脚本前加入键入sa口令等选单。

我做了大量的脚本,给工作带来了很多便利。
什么?..贴出来!当然是不可能的,自己动手那才有乐趣呢。
愿与各位交流。
我只和纯数据打交道,诸位有其它请加入。

 syxie 回复于:2005-01-16 18:15:26 这个脚本还有一个地方没有考虑,我也曾经写过类似的shell脚本,请大家使用时注意:
如果操作系统的LANG设置和数据库的语言不一致时,使用isql 的时候,会打印一些提示,刚好在前两行。

这样这个脚本使用的时候就有一点问题,如果个人用用还是挺方便的,但是如果做成版本或者商用的话,就请注意一下。

 hiaw 回复于:2005-02-23 11:55:38 请教各位大虾,在NT中用bcp out 或in 时,可以直接使用 -n 而不用 -c 吗?
是不是用 -n 比 -c 更好些呢? 
但为什么一般大家使用的都是 -c 呢?
小弟在这先谢了!

 tony_go 回复于:2005-02-26 14:34:10 -n 快,但不能在不同操作系统中移植
-c 稍慢,但能在不同操作系统中移植

 赛北之狼 回复于:2005-03-14 22:38:41 提醒:将-c 修改为-n 后也会有问题,对如表中有text字段的,如果bcp out ,bcp in 前后sybase的字符集不一致会导致table 不可用,需要用dbfix 修复一把

 hefan 回复于:2005-03-17 15:50:23 select 'bcp XXX..'+name+' out c:\'+name+'.txt -Usa -P -SYYY -n' from XXX.sysobjects where type='U'

其中XXX是数据库的名字,YYY是服务器的名字,这个语句可以一次得出bcp out整个数据库的语句,将结果保持成一个批处理直接执行就可以了。

 baiqiepian 回复于:2005-08-18 16:14:05

 


[VB.NET程序]Split 函数应用示例 ( VBScript版本 )  [Delphi程序]IP地址的隐藏(delphi实现 )
[Delphi程序]-添加 FileDrop 属性到 可视化控件(visual contr…  [其他]TIMESTAMP列类型详解(怎样设列的默认值为Now())
[求职简历]简历模板(办公室秘书 )  [求职简历]简历模板(人力资源主管 )
[求职简历]简历模板(客户代表 )  [求职简历]简历模板(翻 译 )
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台