如何从sybase表中获取索引名称,键和描述

时间:2013-04-03 04:32:41

标签: indexing backup sybase table-index

我想从Unix shell脚本创建特定表的索引,因此我需要该特定表的索引名称,索引键和索引描述。

“sp_helpindexes”给出了一些不需要的行的所有这些细节,但我需要另外的方法来获取索引名称,键和描述。

任何人都可以帮我这个....?

3 个答案:

答案 0 :(得分:1)

从sysindexes表中获取索引名称
从sysindexes中选择name,indid,keycnt,其中id = object_id(“table_name”)
然后使用index_col(table_name,indexid,keycnt-1)查找键。

希望这会有所帮助

谢谢,
戈帕尔

答案 1 :(得分:0)

自定义SQL请求

您可以使用sp_helptext命令找到sp_helpindex的说明,如下所示:

use sybsystemprocs
go

sp_helptext sp_helpindex
go

这将为您提供存储过程的定义。然后,您可以提取所需的SQL请求(这可能很棘手,另一个store_proc)。

用于处理sp_helpindex

输出的Shell脚本

另一方面,一旦你可以调用你的SQL服务器,它似乎只是一个shell问题。 例如,使用sqsh程序(类似于程序的类似程序),您可以拥有一个包含以下内容的文件myindexes.sql:

use databaname
go
sp_helpindex tablename
go

然后是命令

sqsh -U username -P password -S SYBASESERVER -i myindexes.sql -h > myindexes.txt

将为您提供可以处理的sp_helpindex输出。 使用sqsh输出,第3行包含索引名称和键,第4行包含描述。 我用:

#!/bin/bash

# Call sqh command : output in myindex.txt
sqsh -U username -P password -S SYBASESERVER -i myindexes.sql -h > myindex.txt

# Then process the output
INAME=`sed '3!d' myindex.txt | tr -s ' ' | cut -d ' ' -f 2`
IKEYS=`sed '3!d' myindex.txt | tr -s ' ' | cut -d ' ' -f 3`
IDESC=`sed '4!d' myindex.txt | tr -s ' ' | cut -f 2`

# print out the values
echo "$INAME $IKEYS $IDESC"

# Clean up the files
rm myindex.txt

希望这有点帮助。

答案 2 :(得分:0)

在Sybase版SAP IQ / 16中,您可以获取以下索引列表(表名称my_table区分大小写):

select *
from sys.sysindexes
where tname = 'my_table';