设为首页 收藏本站
查看: 1001|回复: 0

[经验分享] Oracle数据迁移到Sybase数据库

[复制链接]

尚未签到

发表于 2016-8-2 20:22:14 | 显示全部楼层 |阅读模式
  在项目中,许多地方用到每天从中心数据库Oracle中数据导入到Sybase数据库,或者Sybase数据库中数据迁移到Sybase数据库中。如果是Oracle那么采用Jdbc生成bcp文件,否则直接利用sybasebcp工具生成相关的bcp数据文件,然后利用Sybase中BCP工具将数据导入到Sybase中。
  Sybase提供的大容量复制程序(BCP)用来帮助你以主表方式从数据库快速输出输入数据。重要的是,它是SYBASE公司提供专门用于数据库表一级数据备份的工具。一般存放在所安装的ASE或者Open Client BIN目录中。bcp 实用工具在实例和数据文件之间以用户指定的格式复制数据。BCP也一个可从CLIENT Library或者DB-Library应用程序使用的API(应用程序编程接口)。可执行文件名称为bcp.EXE
ASE-15.0默认目录为:$Sybase\OCS-15_0\bin
12版本以前的ASEbcp存放目录为 $SYBASE/bin
12版本(含12版本)以后存放目录为 $SYBASE/OCS-12_x/bin
其中$SYBASESYBASE安装目录,12_x代表12.012.5版本,显示为12_0或者12_5
可执行文件名称为bcp.EXE

Bcp命令详解(sybase)使用如下:
语法

usage: bcp [[database_name.]owner.]table_name[:view_name] {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 fileexport_path  -Uusername -Ppassword -Sservername -c
例如:bcp dbname..tablename out c:\tmp\filename -Usa -Ppassword -Sserver -C 即可。
     其中 dbname为数据库名,tablename为表名,-U后为SYBASE登录名称,-P后为SYBASE登录口令,-S后为SYBASE服务名称(即你在dsedit中设置的Servername),-c代表使用可见文本方式导出数据。如果为数据恢复只需要将out 替换为 in 即可。
 
其中参数说明 
database_name
指定的表或视图所在数据库的名称。如果未指定,则为用户默认数据库。
owner
    表或视图所有者的名称。如果执行大容量复制操作的用户拥有指定的表或视图,则 owner 是可选的。如果没有指定 owner 并且执行大容量复制操作的用户不拥有指定的表或视图。在以下情况下可省略表的所有者。如果该表的所有者与执行BCP的用户相同,或者如果它是唯一的名称,且执行BCP的用户有权从该表读出或选择。
table_name
    是将数据复制到 Sybase 时 (in) 的目的表名,以及从Sybase 复制数据时 (out) 的源表名。

view_name
     是将数据复制到 Sybase 时 (in) 的目的视图名,以及从 Sybase 复制数据时 (out) 的源视图名。只有其中所有列都引用同一个表的视图才能用作目的视图。有关将数据复制到视图的限制的更多信息,请参见 INSERT
in | out 
     指定大容量复制的方向。in 是从文件复制到数据库表或视图,out 是指从数据库表或视图中导出或转储。
data_file
     大容量复制表或视图到磁盘(或者从磁盘复制)时所用数据文件的完整路径。当将数据大容量复制到 Sybase  时,此数据文件包含将复制到指定表或视图的数据。当从 Sybase 大容量复制数据时,该数据文件包含从表或视图复制的数据。路径可以有 到 255 个字符。
-m max_errors
     指定在大容量复制操作取消之前可能产生的错误的最大数目。bcp 无法复制的每一行都将被忽略并计为一个错误。如果没有包括该选项,则默认为 10
-f format_file
     指定格式文件的完整路径,该格式文件包含以前在同一个表或视图上使用 bcp 时的存储响应。当使用由 format 选项所创建的格式文件大容量复制入或复制出数据时,使用此选项。格式文件的创建是可选的。在提示几个格式问题之后,bcp 将提示是否在格式文件中保存回答。默认文件名为 Bcp.fmt。大容量复制数据时,bcp 可引用一个格式文件,因此不必重新交互输入以前的回答。如果未使用此选项,也没有指定 –n-c-w-6 或 -N,则 bcp 将提示输入格式信息。
-e err_file
     指定错误文件的完整路径,此错误文件用于存储 bcp 无法从文件传输到数据库的所有行。来自 bcp 的错误信息将发送到用户工作站。如果未使用此选项,则不创建错误文件。
-F first_row
     指定要大容量复制的第一行的序数。默认值是 1,该选项可用来将大型数据库的数据抽取到交错排列到多个BCP文件中。表示在指定数据文件的第一行。
-L last_row
     指定要大容量复制的最后一行的序数。该选项可用来将大型数据库的数据抽取到交错排列到多个BCP文件中。表示指定数据文件中的最后一行。
-b batch_size
     指定所复制的每批数据中的行数。每个批处理作为一个事务复制至服务器。SQL Server 提交或回滚(在失败时)每个批处理的事务。默认情况下,指定的数据文件中的所有数据都作为一批复制。请不要与 -h "ROWS_PER_BATCH = bb" 选项一起使用。
-n native
     导入导出的本机文件格式。它是一个伪二进制格式,不可读,但导入导出速度却比较快。该文件格式是特殊操作系统特有的,而且在不同操作系统之间不可移植。使用数据的本机(数据库)数据类型执行大容量复制操作。此选项不提示输入每一字段,它将使用本机值。
-c  character 
     表示这是字符文件格式,用来编写人们可用和刻度的文本文件。字段之间的分割为<TAB>字符,如果你想创建一个在不同操作系统上其他Sybase服务器可用的文件,那么必须使用这一个选项。使用字符数据类型执行大容量复制操作。此选项不提示输入每一字段;它使用 char 作为存储类型,不带前缀,\t(制表符)作为字段分隔符,\n(换行符)作为行终止符。
-t field_terminatior
     选项用来分隔输出文件中每个字段/列。
-r row_terminator
     选项用来分隔输出文件中的每一行。
-U username 
     执行BCP的用户或注册。该用户必须足够的权限来执行需要的select或者Insert语句,以便执行BCP过程。
-P password
     运行BCP的用户口令,如果不规定该口令,BCP会想你提示。
-I interfaces_file
     使用的sql.ini文件所在的位置,如果不规定interfaces_file的数值,那么Sybase将根据主机变量$Sybase中规定的目录,在INI子目录中查看。
-S server
     数据库和表所在服务器名称。
-a display_charset
采用如下方法生成一个可以一次导出一个数据库中所有表的数据的执行脚本。

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

针对系统移植所需做的工作,应该有如下几个步骤
1. 安装新环境的硬件环境,包括网络,硬盘状况
2. 安装新环境的操作系统,包括Service Pack; 
3. 安装相同版本的SYBASE数据库产品,包括补丁
4. 添加数据库用户,设备等相关信息,应与老系统中一致 
5. 创建新系统数据库
6. 利用你所拥有的表脚本或者通过SYBASE CENTRAL中的生成DDL功能,将老系统中的建表
<!--EndFragment-->
<!--EndFragment-->

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-252162-1-1.html 上篇帖子: Oracle中常用的命令和函数 下篇帖子: Oracle 表和索引的设计
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表