学习总结:sybase中bcp命令批量导出和导入

来源:互联网 发布:json数据怎么传到前台 编辑:程序博客网 时间:2024/04/29 10:54

       处理sybase数据导入导出是一件苦力活,无奈公司项目旧版都是用sybase数据库,为了日后方便操作,专门编写该学习总结,DBArtisan8.6是一个操作数据库的客户端,可以操作sql server,mysql,DB2,oracel和sybase,冒似操作mysql有问题,反正我弄了一个下午,都没发搞成功,如有那位兄弟处理过mysql的,在此文留言哈。不废话了,直接上图文吧。

1.先用DBArtisan 8.6.1客户工具导出所有表的结构,文件名保存为websearch_data.sql


导出后的格式如下图所示:


2.bcp命令用来导出表的数据

2.1.在d:盘根目录下,编辑一个文件websearch.sql:
set nocount on
use websearch
go
select 'bcp websearch..' + name + ' out d:\temp\' + name + '.txt -Usa -Psungoal -Ssungoal -c ' from sysobjects where type='U'
go
2.2.在d:盘根目录下,写一个bat文件,命名为bcp_cmd.bat:
isql -Usa -Psungoal -Ssungoal  -i d:\websearch.sql -o d:\bcpout.bat

2.3.在d:盘根目录下,执行d:\bcp_cmd.bat文件, 就会看到当前目录下生成一个bcpout.bat,然后修改该文件,把后的断开的字符去掉空格,正确格式如下:


2.4双击运行bcpout.bat,,就可以把数据导出到d:\temp\目录,该目录下所有文件都是以txt结尾的文件。如下截图所示:


3.复制上面的将上面的bcpout.bat文件,并命名为bcpin.bat,打开bcpin.bat文件,批量替换out改为in

4.在目标服务器操作导入数据,把websearch_data.sql,bcpin.bat和d:\temp\目录的文件上传到目标服务器,并在该服务器的D盘下创建temp目录,把txt文件放temp目录下,执行如下操作:

4.1导入websearch_data.sql生成创建表

4.2双击运行bcpin.bat

注意:导入过程中有可能遇 bcp导入数据时LONGCHAR错误

BCP insert operation is disabled when LONGCHAR capability is turned on and data size is changing between client and server character sets since BCP does not support LONGCHAR yet.
原因为客户端、服务器之间字符集转换失败导致。

可通过修改参数“disable character set conversion”解决:

> sp_configure "disable character set conversion", 1

> go

为静态参数,所以需要重启server

再尝试导入成功。

5.bcp单表导入导出:
导出数据:
bcp websearch.dbo.db_classifyout D:\temp\db_classify.txt -Usa -Psungoal -Ssungoal -c -b 10000
导入数据:
bcp websearch.dbo.db_classifyout in D:\temp\db_classify.txt-Usa -Psungoal -Ssungoal -c -b 10000
注意:在导入大量数据时加上-b参数,分批提交不以致于数据库日志被塞满
0 0