转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> SyBase >> 正文
BCP 简 要 说 明         ★★★★

BCP 简 要 说 明

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

不知道贴过没有!

BCP是SYBASE公司提供专门用于数据库表一级数据备份的工具。
一般存放在所安装的ASE或者Open Client 的BIN目录中。
12版本以前的ASE,bcp存放目录为 $SYBASE/bin
12版本(含12版本)以后存放目录为 $SYBASE/OCS-12_x/bin
其中$SYBASE为SYBASE安装目录,12_x代表12.0、12.5版本,显示为12_0或者12_5

可执行文件名称为bcp.EXE
参数列表如下:(可用 bcp – 得到)
usage: bcp [[database_name.]owner.]table_name[:slice_number] {in | out} datafile

        [-m maxerrors] [-f formatfile] [-e errfile]
        [-F firstrow] [-L lastrow] [-b batchsize]
        [-n] [-c] [-t field_terminator] [-r row_terminator]
        [-U username] [-P password] [-I interfaces_file] [-S server]
        [-a display_charset] [-q datafile_charset] [-z language] [-v]
        [-A packet size] [-J client character set]
        [-T text or image size] [-E] [-g id_start_value] [-N] [-X]
        [-M LabelName LabelValue] [-labeled]
        [-K keytab_file] [-R remote_server_principal]
        [-V [security_options]] [-Z security_mechanism] [-Q]

常用数据备份格式为:
bcp dbname..tablename out c:\temp\filename -Usa -Ppassword –Sservername –c
即可。
其中 –U后为SYBASE登录名称,–P后为SYBASE登录口令,–S后为SYBASE服务名称,–c代表使用可见文本方式导出数据
如果为数据恢复只需要将out 替换为 in 即可。

可用如下方法生成一个可以一次导出一个数据库中所有表的数据的执行脚本。
编辑一个如下文本文件 文件名称例为 bcpscript:
use dbname     选中将要导出数据的数据库
go
select 'bcp dbname..' + name + ' out c:\temp\' + name + '  -Usa -P -Ssybcdsrv -c' from sysobjects where type = 'U'   在sysobjects系统表中type为U的表为用户表,系统表为S。
go

用如下格式执行:
isql –Usa –Ppassword –Sservername –i bcpscript –o bcpout.bat
i参数后为输入文件,o参数后文件为输入文件执行后得到的输出文件。
执行后可以得到一个后缀名为 BAT 的批处理文件(在unix下则生成一个shell文件并更改相应的执行权限),可直接执行。即在指定的目录下导出了相应的数据文件。一个表的数据为一个文件。如在UNIX下则可不用BAT后缀。

备份得到的数据文件如果需要重新往数据库中恢复,只需要将上面操作步骤中BCP命令中的out 参数换为in参数即可。
注意:在对正式数据做操作前最好先作一些测试。
另外,如果牵涉到使用bcp进行字符集的更改,可以采用 –J charset 参数进行
关于BCP等工具的具体使用指南,请参见SYBASE相关文档。

针对系统移植所需做的工作,应该有如下几个步骤:
1. 安装新环境的硬件环境,包括网络,硬盘状况;
2. 安装新环境的操作系统,包括Service Pack;
3. 安装相同版本的SYBASE数据库产品,包括补丁;
4. 添加数据库用户,设备等相关信息,应与老系统中一致
5. 创建新系统数据库;
6. 利用你所拥有的表脚本或者通过SYBASE CENTRAL中的生成DDL功能,将老系统中的建表脚本导出,生成数据库中的表.最好将建表脚本与建立表上约束(主键,外键等)的脚本分开,先在表上不建约束,在数据导入后,再加上.;
7. BCP OUT 老系统中数据,根据上面提到的方法;
8. 运行建立其他对象的脚本,包括索引,主键,外键及存储过程,触发器,缺省等;
9. 在新系统中对需要更改的表结构做更改,或者添加新表;
10. 测试应用系统是否工作正常.

 jazy 回复于:2003-02-20 18:36:23 在旧版贴过,不过,你这应该更为详细!

加入精华吧,好像有很多人还对这个宝贝不太了解!

 晴天羽 回复于:2003-02-21 09:12:26 我们可以设置成P命令,不必在SYBASE中使用,不过SYBASE一定要打开。我们可以把命令写在一个P文件中(文件后缀名是bat),直接运行文件就可以了。

 qjhadm 回复于:2003-02-24 11:04:13 当我执行一次导出一个数据库中所有表的数据的执行脚本时,有一点不明白之处,请指教:
=============================================
use dbname 选中将要导出数据的数据库 
go 
select 'bcp dbname..' + name + ' out c:\temp\' + name + ' -Usa -P -Ssybcdsrv -c' from sysobjects where type = 'U' 在sysobjects系统表中type为U的表为用户表,系统表为S。 
go 

=============================================
不知到其中的name是如何写的,我是不是要将我这个数据库中所有的表名都写一遍呢?
别外,我将这个脚本存为一个文件文件bcpscript.txt,而在执行
isql –Usa –Ppassword –Sservername –i bcpscript –o bcpout.bat
时在-i后面是写 bcpscript 呢还是bcpscript.txt呢?
还有,我现在在一个局域网内进行小型数据操作,数据库SA没有设置密码是不是这个脚本不能正常执行呢?
我在-p后面写些什么呢?

以上问题请各位指教,谢谢!

 gototop 回复于:2003-02-24 17:33:00 table name一般可以使用select生成,

-i应该是-I ,输入什么名字应该无所谓,不过从没用过这个参数:)

-P后面跟的是密码。

 qjhadm 回复于:2003-02-25 10:31:31 谢谢,不过还是有一些不太清楚!

 红豆妹妹 回复于:2003-02-27 21:55:04 [quote:249b06bbed="gototop"]
-i应该是-I ,输入什么名字应该无所谓,不过从没用过这个参数:)

[/quote:249b06bbed]

不是-I,是-i。小写的。

 cctv 回复于:2003-03-04 14:15:09 很简单,-i后面跟一个你写好的脚本文件名就可以了,如
a.sql:
select * from tablename

isql -Uuname -Ppwd -ia.sql就是在isql中执行a.sql文件中的语句。

也可以这样做:
isql -Uuname -Ppwd < a.sql

 qjhadm 回复于:2003-03-07 12:32:39 -j 参数如何使用?我从一个Sybase服务上BCP out 数据,然后在另一个服务上BCP in 数据,而且两个服务上的-字符集设置相同均为iso_1 ,-j参数还需要加吗?

 Blackrose 回复于:2003-03-08 00:07:18 字符集参数是 -J 大写!!

其实关键不是你两边服务器的字符集是否相同,关键在于你当时往服务器保存数据时使用的什么字符集。注意,服务器的字符集设置可能跟当时的客户端不一定相同,比如 cp850的服务器上可能装的是 iso_1 编码的内容。

你导出数据后,最好确保bcp文件中中文字符看上去正常,不然就加上-J

:)

 rosehu 回复于:2003-03-19 15:26:50 我有两个服务器,我用bcp test..table1 out table.out -Usa -Ppasswd -Sserver -c,怎么不能用说找不到服务器。

 cctv 回复于:2003-03-19 16:13:19 能不用sa时不要用sa。

另外你的另一个服务器的interfaces文件和本地这个合并了吗?用isql能访问吗?

 Blackrose 回复于:2003-03-19 18:57:55 你的服务器名字叫 server 吗?

我例子中的server需要在使用时替换成你Sybase服务器的实际名称。

 fanpinthk 回复于:2004-05-07 01:21:49 谢谢 我收了

 七剑下天山 回复于:2005-07-12 11:01:56 想知道如果不用工具,怎么才能把数据库的DDL导出,也用类似于BCP这种命令行形式

 


[SyBase]usage of bcp command.(快来看)。  [SyBase]BCP 命令的问题
[SyBase]自动生成SYBASE ASE的bcp脚本  [演讲致辞]嬉 说 股 票
教程录入: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……
    咸宁网络警察报警平台