Sybase:bcp命令参考

SYBASE数据库方面BCP说明

  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. 测试应用系统是否工作正常.

 

 

 

 

bcp    说明 以用户指定的格式将数据库表复制到操作系统文件或从操作系统文件中复制出来。bcp 位于$SYBASE/$SYBASE_OCS/bin 中。
         Windows NT 实用程序是 bcp.exe,它位于 %SYBASE%\%SYBASE_OCS%\bin 中。
         
         语法 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]
         [-z language]
         [-A packet_size]
         [-J client_charset]
         [-T text_or_image_size]
         [-E]
         [-g id_start_value]
         [-N]
         [-X]
         [-K keytab_file]
         [-R remote_server_principal]
         [-V [security_options]]
         [-Z security_mechanism]
         [-Q]
         [-Y]
     或
         bcp -v
参数     database_name
         如果正被复制的表位于缺省数据库或 master 中,则此参数是可选项。否则,必须指定数据库名。

        所有者
         如果您或数据库所有者拥有正被复制的表,则此参数是可选项。如果未指定所有者,bcp 首先查找您所拥有的表是否有此名称,然后查找
         数据库所有者所拥有的表是否有此名称。如果其他用户拥有此表,则必须指定所有者名,否则命令将失败。
        view_name
         是正在拷出的视图名。
        table_name
         是要复制的数据库表的名称。表名不能是 Transact-SQL 保留字。分区号 partition_number 并不存在于表 table_name 中。
        slice_number
         是要复制的数据库表的数据段的编号。
        partition_id
         是要复制到的分区的标识符。
        in | out
         是复制方向。in 表示从文件向数据库表中复制;out 表示从数据库表或视图向文件复制。
        datafile
         是操作系统文件的全路径名。路径名的长度可以是 1 到 255 个字符。
        -m maxerrors
         是在 bcp 中止复制之前,允许的最大非致命错误数。bcp 放弃不能插入的每一行 (由于转换错误,或尝试向不允许有空值的列中插入空值〕,同时将每个被放弃的行计为一个错误。如果不包括此参数,
         bcp 将使用缺省值 10。
        - f formatfile
         是文件的完整路径名,该文件存储着上次在同一个表上使用 bcp 时的应答。回答 bcp 的格式提问后,它提示您将回答保存到一个格式文件中。格式文件的创建是可选的。缺省文件名是 bcp.fmt。bcp 程序可以在复制数据时引用格式文件,这样用户就不必以交互式方式重复以前的格式应答。只有在用户以前创建了希望现在用于拷入或拷出的格式文件的情况下,才使用 -f 参数。如果不指定此参数,bcp 将以交互方式向用户询问有关格式的信息。
        - e errfile
         是错误文件的全路径名,bcp 在其中存储无法从文件传送给数据库的所有行。来自 bcp 的错误消息显示在终端上。bcp 只在指定此参数后才创建错误文件。
        - F firstrow
         是要从输入文件中复制的第一行的行号 (缺省为第一行) 。在执行多进程复制这一繁重任务时应避免使用 -F 选项,因为它通常导致 bcp 占用更多资源来运行,且不能加快进程。而应将 -F 用于单个进程,进行即席复制。
        - L lastrow
         是要从输入文件复制的最后一行的行号 (缺省为最后一行)。
        - b batchsize
         是每批数据中被复制的行数 (缺省为复制一批数据的所有行)。批量复制只适用于批量拷入;对批量拷出不起作用。bcp 接受的 batchsize 的最小数值为 1。
        - n 
         使用本机(操作系统)格式执行复制操作。指定 -n 参数意味着 bcp 将不对每个字段进行提示。使用本机数据格式的文件为人工不可读格式。
        - c
         使用 char 数据类型作为数据文件中所有列的缺省数据类型来进行复制操作。如果要在平台间共享数据,则使用这种格式。此参数不对每个字段进行提示;它使用 char 作为缺省的存储类型,没有前缀,使用 \t(制表符)作为缺省的字段终结符,并且使用 \n (换行符)作为缺省的行终结符。
        - t field_terminator
         指定缺省的字段终结符。
        - r row_terminator
         指定行终结符。
        -U username
         指定 Adaptive Server 的登录名。
        - P password
         指定 Adaptive Server 口令。如果没有指定 -Ppassword,bcp 将提示输入口令。如果口令是 NULL,可以省略 -P 标志。
        - I interfaces_file
         指定连接到 Adaptive Server 时要搜索的接口文件的名称和位置。如果没有指定 -I,bcp 将在 SYBASE 环境变量(Windows NT 中的 ini 目录)指定的目录中查找接口文件 (Windows NT 中的 sql.ini)。
        - S server
         指定要连接到的 Adaptive Server 名。如果指定不带参数的 -S,bcp 将使用 DSQUERY 环境变量指定的服务器。
        - a display_charset
         允许用户从终端上运行 bcp,而此终端上的字符集与正在运行 bcp 的计算机上的字符集不同。将 -a 和 -J 联用以指定转换所需的字符集转换文件 (.xlt 文件) 。只有在客户端字符集与缺省字符集相同时,才单独使用 -a,而不使用 -J。
         
         如果使用 -a 参数命名的字符转换文件遗漏或输错名称,将出现如下错误消息:
         Error in attempting to determine the size of a pair of translation tables.:'stat' utility failed.
        - z language
         是服务器用来显示 bcp 提示和消息的替代语言的正式名称。没有 -z 标志时,bcp 使用服务器的缺省语言。可以在安装期间或安装之后,使用 langinstall 实用程序 (或 Windows NT 中的 langinst)或 sp_addlanguage 存储过程向 Adaptive Server 添加语言。
         如果使用 -z 参数指定了不正确或无法识别的语言,会显示如下错误消息:
         Unrecognized localization object. Using default value 'us_english'.Starting copy...=> warning.
        - v
         显示 bcp 的版本号和版权消息,并返回操作系统。
        - A packet_size
         指定用于此 bcp 会话的网络包大小。例如:bcp pubs2..titles out table_out -A 2048为此 bcp 会话将包大小设置为 2048 字节。 packet_size 必须介于 default network packet size 和 maximum network packet size 配置变量的值之间,且必须是 512 的倍数。使用大于缺省值的网络包大小可提高大批量复制操作的性能。
        - J client_charset
         指定在客户端上使用的字符集。bcp 使用过滤器在 client_charset 和Adaptive Server 字符集之间转换输入。
         -J client_charset 请求将 Adaptive Server 字符集与客户端上使用的字符集 client_charset 进行相互转换。
         不带参数的 -J 将字符集转换设置为 NULL。这样不会发生任何转换。若客户端与服务器使用相同的字符集,则使用该设置。
         如果省略 -J,则字符集将设置为平台的缺省字符集,且不必是客户端正使用的字符集。
         如果使用 -J 参数指定了不正确或无法识别的字符集,将显示如下错误消息:
         Unrecognized localization object. Using default value 'iso_1'.Starting copy...=> warning.
        - T text_or_image_size
         允许以字节为单位指定 Adaptive Server 发送的 text 或 image 数据的最大长度。缺省值为 32K。如果 text 或 image 字段大于 -T 的值或缺省值,bcp 不会发送此溢出值。
        - E
         显式指定表的 IDENTITY 列的值。缺省情况下,在向包含 IDENTITY 列的表中批量复制数据时,bcp 将为每行指派一个临时的 IDENTITY 列值 0。这仅在向表中复制数据时有效。bcp 从数据文件中读取 ID 列的值,但是不将值发送给服务器。相反,在 bcp 向表中插入每一行时,服务器为每行指定一个唯一的、连续的 IDENTITY 列值,起始值为 1。如果向表中复制数据时指定了 - E 标志,bcp 将从数据文件中读取列值,并将该值发送给向表中插入该值的服务器。如果插入的行数超过了 IDENTITY 列可能的最大值,Adaptive Server 将返回一个错误。将数据批量复制出来时,-E 参数不起作用。Adaptive Server 会将 ID 列复制到数据文件,除非您使用 -N 参数。
         不能同时使用 -E 和 -g 标志。
        - g id_start_value
         指定将 IDENTITY 列的值作为拷入数据的起点。
         不能同时使用 -g 和 -E 标志。
        - N
         跳过 IDENTITY 列。在以下情况下使用该参数:拷入数据时主机数据文件不包含 IDENTITY 列值的占位符;或者拷出数据时不希望主机文件中包含 IDENTITY 列信息。拷入数据时,-N 和 -E 参数不能同时使用。
        - X
         指定在与服务器的这次连接中,应用程序启动带客户端口令加密的登录。bcp (客户端)通知服务器希望进行口令加密。服务器返回一个密钥,bcp 使用此密钥加密口令,然后服务器在口令到达时使用此密钥对它进行鉴定。如果 bcp 崩溃,系统将创建一个包含用户口令的核心文件。如果未使用加密选项,则口令在文件中以纯文本格式显示。如果使用加密选项,则口令不可读。
        - K keytab_file
         指定用于 DCE 中鉴定的 keytab 文件的路径。
        - R remote_server_principal
         按照安全性机制的定义为服务器指定主管名。缺省情况下,服务器的主管名与服务器的网络名 (由 -S 参数或 DSQUERY 环境变量指定)相匹配。当服务器的主管名和网络名不一致时,使用 -R 参数。
        - V security_options
         指定基于网络的用户鉴定。使用此选项时,用户必须在运行实用程序之前登录到网络的安全系统。在这种情况下,用户必须用 -U 选项提供其网络用户名;任何用 -P 选项提供的口令都将被忽略。
        - V 后面可接一组 security_options 关键字母选项来启用其它安全服务。
             这些关键字母包括:
             · c - 启用数据保密性服务
             · i - 启用数据完整性服务
             · m - 启用连接建立过程中的相互鉴定
             · o - 启用数据源加戳服务
             · r - 启用数据重放检测
             · q - 启用顺序混乱检测
        - Z security_mechanism
         指定用于连接的安全性机制名称。
         在 $SYBASE/install/libtcl.cfg 配置文件中定义安全性机制名称。如果不提供 security_mechanism 名称,则使用缺省机制。
        - Q
         提供对 bcp 版本 10.0.4 的向后兼容性,以用于可空列的复制操作。
        - Y
         指定字符集转换在服务器中被禁用,而是在使用 bcp IN 时由 bcp 在客户端上执行。         

 

 

 

 

 

 

 

 

 

BCP in
bcp "db_ams..tblPatchPolTrxnMthly1101" in "D:\PatchData_1101.txt" -b 3000 -c -t! -S server_name -U username  -P password

BCP out
bcp "db_ams..tblBusnSrc_Alt_Pol_Txn_Mthly03" out "D:\PatchDataAlt_1103.txt" -c -t! -S "server_name" -U "username" -P "password"

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值