我想从Unix shell脚本创建特定表的索引,因此我需要该特定表的索引名称,索引键和索引描述。
“sp_helpindexes”给出了一些不需要的行的所有这些细节,但我需要另外的方法来获取索引名称,键和描述。
任何人都可以帮我这个....?
答案 0 :(得分:1)
从sysindexes表中获取索引名称
从sysindexes中选择name,indid,keycnt,其中id = object_id(“table_name”)
然后使用index_col(table_name,indexid,keycnt-1)查找键。
希望这会有所帮助
谢谢,
戈帕尔
答案 1 :(得分:0)
您可以使用sp_helptext命令找到sp_helpindex的说明,如下所示:
use sybsystemprocs
go
sp_helptext sp_helpindex
go
这将为您提供存储过程的定义。然后,您可以提取所需的SQL请求(这可能很棘手,另一个store_proc)。
另一方面,一旦你可以调用你的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';