存档

2010年 的存档,文章数:148

Sybase ASE自15.0.2后增加了用户自定义函数的功能。

在Sybase中,以 2010-10-18 12:30:01格式显示日期数据时,用convert函数不能实现,需要替换一下字符。

select convert(varchar,getdate(),117)
go

 ------------------------------
 2010/10/18 20:51:10

(1 row affected)

利用函数str_replace替换上面返回的日期字符串中的/为-

str_replace(convert(char(19),getdate(),117),'/','-')

1> select str_replace(convert(char(19),getdate(),117),'/','-')
2> go

 -------------------
 2010-10-18 20:53:13

(1 row affected)

在oracle的sqlplus中有一个命令:desc,能够简要的显示基表、视图等的结构。desc的显示结果简单明了,比较实用。虽然在Sybase ASE中的存储过程sp_help也能实现查看表结构的目的;但是,显示结果很多尤其换行混乱,让人看得眼花缭乱。显示的存储过程:sp_desc能够实现oracle的sqlplus中desc相同的功能,仅仅多了一列:列序号。

效果图如下:

实现类似oracle的sqlplus中desc想类似功能的sp_desc存储过程

 

存储过程sp_desc的语法如下:

在sqlplus中,desc后面跟上表名,能够显示简要的表创建语法。

下面的SQL语句能够实现类似sqlplus中desc的类似的功能。

select o.obj#,o.name object_name,c.column_id,c.column_name,c.data_type,c.data_length,c.data_precision,c.data_scale,c.nullable
from sys.tab$ t,dba_tab_cols c,sys.obj$ o,sys.user$ u
where o.obj#=t.obj#
  and o.name=c.table_name
  and c.owner=u.name
  and o.owner#=u.user#
  and u.name='SCOTT'
  and o.name='EMP'
order by obj#,column_id 
;

PowerDesign是Sybase推出的主打数据库设计工具。PowerDesign致力于采用基于Entiry-Relation的数据模型,分别 从概念数据模型(Conceptual Data Model)和物理数据模型(Physical Data Model)两个层次对数据库进行设计。概念数据模型描述的是独立于数据库管理系统(DBMS)的实体定义和实体关系定义。物理数据模型是在概念数据模型 的基础上针对目标数据库管理系统的具体化。

PowerDesigner 15下载地址:http://download.sybase.com/eval/PowerDesigner/PowerDesigner15_Evaluation.exe
库文件:
http://download.sybase.com/eval/PowerDesigner/PowerDesigner15_Library
PowerDesigner15.1破解补丁下载:
http://www.ali8ba.com/upfiles/pdflm15.rar

PowerDesigner 12.5下载地址:http://download.sybase.com/eval/PowerDesigner/powerdesigner125_eval.exe

PowerDesigner12.5破解补丁下载:
http://blogimg.chinaunix.net/blog/upfile2/080619224716.zip

破解方法:
下载 PowerDesigner12.5 后有一个 license.lic 和 pdflm12.dll 两个文件,license.lic 是用于破解序号的,pdflm12.dll 是用于替换原来安装后的文件,破解首先用 pdflm12.dll 替换安装要目录的 pdflm12.dll 文件,然后在PD的菜单中找到 Tools ==>> License Parameters ==>> 选第一个,然后先load找到 下载的 license.lic 文件,重启即破解完成。

前面有篇文章中,介绍利用游标和sp_spaceused来查看数据库内所有表占用的空间,并倒序排序。

统计SQL SERVER数据库内所有表占用空间并排序

 

下面介绍另外一种方法:利用sp_MSforeachtable替代游标来实现上篇文章中的类似功能。

 

use ossdb
go

 --------查看所有表空间使用情况
CREATE TABLE #T(
 name  nvarchar(256),
 rows  varchar(11),
 reserved varchar(18),
 data  varchar(18),
 index_size varchar(18),
 unused  varchar(18)
)

EXEC sp_MSforeachtable "INSERT #T EXEC sp_spaceused '?'"

SELECT   * FROM #T ORDER BY Convert(int,SubString(data,1,Len(data)-3)) DESC

drop table #T
go

 

测试通过,将ossdb改成用户数据库名字即可。

把从Sybase或其它类型数据库导出的文本文件再次导入到sybase数据库的时候,bcp是个很好的工具。

本博客已有3篇关于bcp的文章:

 

如果要用bcp导入很多的表,对每一个表都要写一条语句是件很费劲的事情,尤其表数量很多的时候。简单的方法呢?

第一种方法: 利用SQL语句

在bcp out导出数据的时候,也就是生成相应的bcp out命令语句的时候,也同时生成bcp in导入的命令语句。

生成导出语句的SQL为:

select  "bcp "+db_name()+"."+user_name(uid)+"."+name+"  out /tmp/databcpout/" +name+ ".txt -Usa -P<sa_passwd> -S<server_name>  -c -T10000000 " from sysobjects where type='U' order by name

其中: 将<sa_passwd>,server_name> 分别替换成sa的密码和数据库服务器名。或者用对想要导出的表有查询权限的用户也行。

Sybase ASE自版本15.0.2开始增加判断字符串是否为日期类型的函数:isdate,以及判断字符串是否为数字类型的函数:isnumeric

函数:isdate

Syntax

isdate(character_expression)

Parameters

character_expression

    is a character-type variable, constant expression, or column name.

Usage

Returns 1 if the expression is a valid datetime value; returns 0 if it is not. Returns 0 for NULL input.

在solaris系统中,tar命令中排除指定目录和文件的参数与linux中tar命令不同。

在solaris 10中,可以这么用。

比如:我想打开目录/sybase到/tmp/sybase.tar,排除目录/sybase下的两个文件:EBF17156.tar和

cd /sybase

echo /sybase/EBF17156.tar > excludefile

echo /sybase/ase1503_solsparc64_2.tar  >> excludefile

tar cvfX /tmp/sybase.tar excludefile  /sybase