ITPub博客

首页 > 数据库 > Oracle > Sybase ASE15中使用bcp实现有条件的导出表内数据(一)

Sybase ASE15中使用bcp实现有条件的导出表内数据(一)

Oracle 作者:calrowen 时间:2012-10-10 10:27:50 0 删除 编辑

    ASE15.0之前的版本中利用bcp这个实用程序只能够导出整表或视图的数据。要想利用bcp有条件得导出表内数据,只能根据条件建立视图,然后再导出该视图的数据;或者根据条件建立临时表,再导出临时表的数据。但是,都必须在执行bcp命令之前到数据库内部去创建对象(视图或者临时表),然后再执行bcp命令导出视图或者临时表数据。显然,不是太方便。而其它的数据库管理系统,比如sqlserver早在sqlserver2000就实现了根据条件queryout数据的功能。利用sybase ASE的第三方工具按条件导出数据也是一种办法。

    在ASE 15.0及以后版本中,sybase终于提供了按照条件导出表内数据的办法,虽然实现起来还稍微有一点点小麻烦,但是终究是有这个功能了。参数:--initstring 就是为实现这个功能而加的。

    关于参数:--initstring的注意事项有:

    1.  参数--initstring之后的SQL语句会在数据导出之前被发送到ASE引擎;

    2.  参数--initstring之后的SQL语句被当做会话级别的SQL语句一样处理;

    3.  参数--initstring之后的SQL语句在整个bcp导出数据会话期间始终有效;

    4.  真正导出的数据是关键字bcp和out之间的表的数据,而不是参数--initstring中select列表的数据。

     火星舱备份一体机作为一款国内领先的数据备份设备,集备份服务器、磁盘备份空间和备份软件于一体,突破了传统备份系统分离式部署的格局,大大减低了备份系统的部署难度和操作难度,使用户真正达到了"数据安全、简单易备"的真实效果。火星舱备份一体机采用高性能的硬件配置,与存储备份管理软件火星企业级跨平台数据备份软件(Mars Backup advanced 简称:MBA)无缝结合,经过反复测试及优化,将两者有机的结合在一起。火星舱备份一体机具有最广泛的备份功能,可满足大中型企业组织机构异构环境的复杂需求,包括从 WindowsLinuxUnix操作系统平台,OracleSybaseSQL ServerMySQLExchangServerDomino等各种主流数据库和应用软件,支持各种物理环境和虚拟环境备份,简化虚拟服务器的数据保护过程。

    下面开始举几个例子:

bcp导出的是关键字bcp和out之间的表的数据,而不是--initstring中select列表的内容
bcp master..sysobjects out sysobjects.txt --initstring "select id,name,type from master..sysobjects where type='U' " -c -Usa -P -Stest 
view plaincopy to clipboardprint?
C:Documents and SettingsAdministrator>bcp master..sysobjects out sysobjects.tx   
t --initstring "select id,name,type from master..sysobjects where type='U' " -c   
-Usa -P -Stest   
Starting copy...   
163 rows copied.   
Clock Time (ms.): total = 16  Avg = 0 (10187.50 rows per sec.)   
C:Documents and SettingsAdministrator>more sysobjects.txt   
sysobjects                          97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
sysindexes                          97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
syscolumns                          97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
systypes                            97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
syslogs 8                                     73728   Dec  2 2   
009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM                 
                      
syspartitions   28                     97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
sysgams 14                                    73728   Dec  2 2   
009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM                 
                      
systabstats     23                     97                229888   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
sysusages       31                     97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
sysdatabases    30                     97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
sysdevices      35                     97                229376   
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM            
                                                        
0000000000000000   
^C   
C:Documents and SettingsAdministrator>  
C:Documents and SettingsAdministrator>bcp master..sysobjects out sysobjects.tx
t --initstring "select id,name,type from master..sysobjects where type='U' " -c
-Usa -P -Stest
Starting copy...
163 rows copied.
Clock Time (ms.): total = 16  Avg = 0 (10187.50 rows per sec.)
C:Documents and SettingsAdministrator>more sysobjects.txt
sysobjects                          97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
sysindexes                          97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
syscolumns                          97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
systypes                            97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
syslogs 8                                     73728   Dec  2 2
009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM                0
                     0
syspartitions   28                     97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
sysgams 14                                    73728   Dec  2 2
009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM                0
                     0
systabstats     23                     97                229888
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
sysusages       31                     97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
sysdatabases    30                     97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
sysdevices      35                     97                229376
Dec  2 2009  6:58:34:590PM      Dec  2 2009  6:58:34:590PM           0
                                                       1
0000000000000000
^C
C:Documents and SettingsAdministrator> 
    上面的这个例子中,sql语句select id,name,type from master..sysobjects where type='U' 虽然被执行了, 但是并没有被反映到导出的结果中。

    想导出sysobjects表中用户表的id和name两列数据,可以利用临时表和视图来实现。但是这和ase15以前版本中的临时表和视图还是不一样的。ase15之前版本中临时表或者视图是显示创建的,而在ase15及后续版本中可以利用隐式创建的临时表或者视图来实现根据条件导出数据的要求。

    火星高科www.marstor.com是国内最早从事专业存储技术的研发团队之一,是集生产、研发、设计和制造为一体的高科技IT企业,是数据存储、备份和容灾等领域国内最知名的软件开发商和设备制造商,也是数据安全领域重要的国产解决方案提供商。相继打造了以"火星Mars"为品牌的系列软件及"火星舱"硬件产品。全国免费咨询电话:400-610-9901

<!-- 正文结束 -->

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/749332/viewspace-1116185/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论