您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 市场营销 > 创智_DRMS_操作手册_sybase数据库BCP导入导出
操作手册1Sybase数据库BCP导入导出操作手册目录1.常用数据库备份类型..........................................................................22.BCP数据导出使用情况......................................................................23.BCP数据导入导出操作方法..............................................................23.1.生成BCP导出语法..........................................................................23.2.BCP数据导出...................................................................................33.3.BCP数据导入...................................................................................43.4.分段导入以及日志清理...................................................................43.5.前后台BCPout&in语法生成器......................................................64.注意事项...............................................................................................6操作手册21.常用数据库备份类型使用Sybase的BackupServer(备份服务器),做Dump备份。转储数据库(Dumpdatabase),就是为整个数据库(包括数据、表结构、触发器、游标、存储过程、事务日志等)做一次物理备份。转储数据库时,系统自动执行一次checkpoint,即将日志和数据从缓冲区拷贝到硬盘(只拷贝脏页),把已被分配的页(日志和数据)转储到设备。这种数据备份方式是将整个数据库的运行环境完整的复制一份,包括数据库的脏页和碎片,在使用load命令恢复时,只能恢复到同样大小的数据库中(数据和日志的大小都只能和原来完全一致),适用于在每天的日终营业网点下班后的日常备份。优点是数据库完整无误,缺点是不能直接查看备份内容。BCP数据库备份BCP(bulkcopy)是SYBASE公司提供专门用于数据库表一级数据备份的工具,一般存放在所安装的ASE或者OpenClient的BIN目录中。利用这个命令来处理数据的备份和恢复,比软件中提供的数据备份、恢复要快的多,因为该命令对数据的操作不产生日志。2.BCP数据导出使用情况如果数据库受到硬伤(如数据库挂起无法恢复、或者系统表结构损坏等),造成数据不能通过备份服务器进行正常备份,或者正常备份的数据库也一样是损坏的,就要通过BCP数据导出方式,把数据库所有表数据导出来,再进行恢复。通过bcp备份恢复可以去掉原数据库的碎片,减小数据库大小,提高数据库的存储效率和运行速度:Sybase数据库作为联机事务处理应用服务器,每天应用程序都对数据库做大量的插入、修改和删除等操作,不可避免的在数据库的物理存储介质上留下页碎片和扩展单元碎片,从而影响数据库的存储效率和运行速度。3.BCP数据导入导出操作方法3.1.生成BCP导出语法命令格式:bcp表名out/in路径名文件名-c-t分隔符-u(用户名)-p(密码)-S(服务器名)-J(字符串)解释:操作手册3数据库名为要备份的数据库名字表名为要备份的表的名字out/in备份用out,恢复用in文件名:备份形成的文件或恢复需要的数据文件,要求包含文件的路径信息,否则默认为当前路径。用户名:一般为sa密码:sa的口令服务器名:如本机器连接多个数据库服务器,则需要指定相应的数据库服务器字符串:cp850一定要填上,否则导出来的中文都是乱码。BCPout语法生成器:SELECT'bcp数据库名.pos.'+name+'out'+name+.txt-Usa-P-S服务名-c-t~-Jcp850fromsysobjectswheretype='U'orderbyname;通过PB将上述语法执行后形成的语句导出成txt文件,然后把后缀名改成bat形成批处理文件,在需要执行时,直接运行批处理文件即可。3.2.BCP数据导出在指定路径执行批处理后,就会开始导出数据,弹出DOS命令窗口,会显示当前的数据导出情况,如正在导出哪个表的数据,导出的数据条数多少或者报错信息等,同时,导出成功后就会在语法里设定的导出目录中生成txt文档:操作手册43.3.BCP数据导入导出成功后,就需要重新建立一个新的数据库和新的表结构,然后通过BCP批处理导入数据。同样,要先生成导入的语法:SELECT'bcp数据库名.pos.'+name+'in'+name+.txt-Usa-P–S服务名-c-t~-Jcp850fromsysobjectswheretype='U'orderbyname;然后存为bat批处理文件再执行即可,同样也会弹出DOS命令窗口显示数据导入情况。3.4.分段导入以及日志清理BCP导出数据不会产生日志信息,速度很快,而BCP数据导入的时候,如果表结构含有索引和主键,就会每BCp进一条数据,数据库都自动写一条log日志,记载此数据的上一条和下一条记录,确定本记录在此表中的准确位置,一是影响bcp速度,二是数据库的log日志飞速膨胀。所以当日志满了之后,就会卡住不再运行,需要清理数据库日志才行,这就需要在BCP导入语法当中,在适当的位置添加调用清理日志的语法,每导出一部分表数据后,就自动清理日志。而一般服务器电脑上都有c:\check文件夹,里操作手册5面自带有清理日志的批处理语法,所以可以直接调用,在bcp导入语法中添加以下语句即可:callc:\checkdb\truncate.bat由于数据库的自动清除log功能只有在一个事务结束后才起作用,所以如果导出的是一个很大的表的话,有可能在导入的过程中就满日志卡住中断了,这样的话就需要对大表进行分段导出和导入,BCP大表导出例子(其中-F后面是起始行数,-L是结束行数):bcpkzx.pos.monthly_tx_summaryoutd:\bcpdata\monthly_tx_summary1.txt-Usa-P-Skzx-c-t~-Jcp850-F1-L200000bcpkzx.pos.monthly_tx_summaryoutd:\bcpdata\monthly_tx_summary2.txt-Usa-P-Skzx-c-t~-Jcp850-F200001-L400000bcpkzx.pos.monthly_tx_summaryoutd:\bcpdata\monthly_tx_summary3.txt-Usa-P-Skzx-c-t~-Jcp850-F400001-L600000bcpkzx.pos.monthly_tx_summaryoutd:\bcpdata\monthly_tx_summary4.txt-Usa-P-Skzx-c-t~-Jcp850-F600001-L800000bcpkzx.pos.monthly_tx_summaryoutd:\bcpdata\monthly_tx_summary5.txt-Usa-P-Skzx-c-t~-Jcp850-F800001-L1000000bcpkzx.pos.monthly_tx_summaryoutd:\bcpdata\monthly_tx_summary6.txt-Usa-P-Skzx-c-t~-Jcp850-F1000001与上面配套的BCP大表导入例子:bcpkzx_chg.pos.monthly_tx_summaryind:\bcpdata\monthly_tx_summary1.txt-Usa-P-Skzx-c-t~-Jcp850bcpkzx_chg.pos.monthly_tx_summaryind:\bcpdata\monthly_tx_summary2.txt-Usa-P-Skzx-c-t~-Jcp850bcpkzx_chg.pos.monthly_tx_summaryind:\bcpdata\monthly_tx_summary3.txt-Usa-P-Skzx-c-t~-Jcp850bcpkzx_chg.pos.monthly_tx_summaryind:\bcpdata\monthly_tx_summary4.txt-Usa-P-Skzx-c-t~-Jcp850bcpkzx_chg.pos.monthly_tx_summaryind:\bcpdata\monthly_tx_summary5.txt-Usa-P-Skzx-c-t~-Jcp850bcpkzx_chg.pos.monthly_tx_summaryind:\bcpdata\monthly_tx_summary6.txt-Usa-P-Skzx-c-t~-Jcp850BCP分段导入导出有完整的操作方案文档,有兴趣的可以另外学习和参考。操作手册63.5.前后台BCPout&in语法生成器以下是针对前台sybase网络版数据库的BCP语法生成器:/*BCPOUT*/SELECT'bcp数据库名.dbo.'+name+'out'+name+.txt-Usa-P–S服务名-c-t~-Jcp850fromsysobjectswheretype='U'orderbyname;/*BCPIN*/SELECT'bcp数据库名.dbo.'+name+'in'+name+.txt-Usa-P–S服务名-c-t~-Jcp850fromsysobjectswheretype='U'orderbyname;后台数据库BCP语法生成器:/*BCPOUT*/SELECT'bcp数据库名.pos.'+name+'out'+name+.txt-Usa-P-S服务名-c-t~-Jcp850fromsysobjectswheretype='U'orderbyname;/*BCPIN*/SELECT'bcp数据库名.pos.'+name+'in'+name+.txt-Usa-P-S服务名-c-t~-Jcp850fromsysobjectswheretype='U'orderbyname;4.注意事项数据库属性必须把选项中的“允许选择进入/批量复制”和“检查点上截断日志”两项勾上。导入的数据库以及temdb大小要足够大。如果数据量大的话,导出的txt文件大小会很大,故导出的路径要保证有足够的空间。导入的数据库的表结构必须与导出数据库的表结构一致,否则会导入失败,对于一些临时表可以不用导入,如果有个性化表的话也需补建才能导入。如果想提高BCP导入数据的速度,可以将比较大的表的索引和主键删除,导入完成后,再重新将删除的主键和索引建上。操作手册7导入后的数据要跟导入前的数据做比较,然后对有差异的表用PipeLine工具进行重新导入。不能连续执行BCP导入语法,否则对于没有主键和索引的表就会造成数据重复。数据导入完成后,要建立相应的触发器、存储过程,部分表需要改表锁为页锁、增加索引、进行数据库优化等。
本文标题:创智_DRMS_操作手册_sybase数据库BCP导入导出
链接地址:https://www.777doc.com/doc-2652400 .html