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)无缝结合,经过反复测试及优化,将两者有机的结合在一起。火星舱备份一体机具有最广泛的备份功能,可满足大中型企业组织机构异构环境的复杂需求,包括从
Windows 、 Linux 到Unix操作系统平台,Oracle、Sybase、SQL
Server、MySQL、ExchangServer、Domino等各种主流数据库和应用软件,支持各种物理环境和虚拟环境备份,简化虚拟服务器的数据保护过程。
下面开始举几个例子:
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
1
1
S
0
97
1
0
229376
Dec 2 2009
6:58:34:590PM
Dec 2 2009
6:58:34:590PM
0
0
0
0
0
0
0
0
1
0000000000000000
sysindexes
2
1
S
0
97
0
0
229376
Dec 2 2009
6:58:34:590PM
Dec 2 2009
6:58:34:590PM
0
0
0
0
0