sybase按照一定顺序导出bcp out表的某些字段

来源:互联网 发布:淘宝上文艺小物件店铺 编辑:程序博客网 时间:2024/04/19 22:42

需求:数据库中有存在一张表A,表A有四列c1 c2 c3 c4;要将A中所有记录的c1,c2,c3三个字段,按照c1 c2排序后导出到数据文件中。
分析:由于sybase中bcp后不能加sql语句,所以不能用bcp out select c1,c2,c4 from a order by c1,c2的方法来做
解决方法:
1 更改表A的锁定类型locking scheme为allpages
ALTER TABLE A LOCK ALLPAGES
2 在表A的c1 c2列上创建聚簇索引
CREATE CLUSTERED INDEX aindex ON A(c1,c2)
3 创建视图只包含A的c1 c2 c3列
create view aview as select c1,c2,c3 from a
4 bcp导出视图
bcp aview out aview.data -c -t'|' -Uuser -Ppassword -Sserver >aview.log
总结:
用聚簇索引来强制限定A表中的记录的物理顺序
用视图来选取需要导出的那些字段
BCP OUT视图其实是按照表中记录的物理顺序导出数据 

原创粉丝点击