免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4165 | 回复: 8
打印 上一主题 下一主题

请帮忙:如何用SQL语句获取取的unique索引字段信息? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-15 12:09 |只看该作者 |倒序浏览
我有一个涉及到几十上百个表的数据库,由于需要倒入大量数据,但因为许多表都建有唯一性索引,现在想获取每个表的哪些字段被定义为唯一性索引,想根据这些唯一性索引先对原表数据针对需要倒入的数据进行清理,然后倒入新数据。

请问:如何通过SQL语句获取每个表的唯一性索引字段?

我的操作系统为:CentOS 5.3 x86
数据库为:IDS 11.5 UC5 x86

论坛徽章:
0
2 [报告]
发表于 2009-09-15 14:08 |只看该作者
dbschema 导出该数据库下的所有表结构,然后再grep 关键字 ,这样可以吧。。。

论坛徽章:
0
3 [报告]
发表于 2009-09-15 15:23 |只看该作者
这个做法是可以,但是我没法做成自动更新的脚本,也就是说,我想自动产生一个文本文件,里面就包含了每个表名以及对应的唯一性索引字段名。
如果使用grep的话,当我对表结构进行了调整之后,我没法自动更新这个文本文件。

有没有更好的办法呀?

论坛徽章:
0
4 [报告]
发表于 2009-09-15 17:02 |只看该作者
那就用系统表,systables,syscolumns,sysindexes去查,
不过不管哪种方法,最后还是要对文本处理的。

论坛徽章:
0
5 [报告]
发表于 2009-09-16 14:19 |只看该作者
我是想通过SQL语句利用shell脚本,自动产生一个文本文件,格式如下:

表名|唯一性索引字段名(如有多个,用逗号分隔)|

例如有一个库有三个名,分别为:
tab1,唯一性索引字段有:rec11,rec12,rec13
tab2,唯一性索引字段有:rec22
tab3,无唯一性索引

则生成以下内容的文本文件:
tab1|rec11,rec12,rec13|
tab2|rec22|
tab3||

论坛徽章:
0
6 [报告]
发表于 2009-09-16 16:49 |只看该作者
1、先找出有唯一索引的表,选出字段以满足tab|rec|的格式,然后处理成符合要求的格式,写入文件
2、剩下的就是不含唯一索引的表。再附加到文件后面。

论坛徽章:
0
7 [报告]
发表于 2009-09-17 09:11 |只看该作者
能不能更详细点的说明呀?
我现在就是没办法通过SQL语句取得哪些表的某些字段有唯一性索引。

论坛徽章:
0
8 [报告]
发表于 2009-09-18 13:42 |只看该作者
你自己难道一点都不思考的吗?

找出唯一索引:
select a.tabname,a.tabid,b.part1,b.part2....
from systables a,sysindexes b
where a.tabname='TABNAME' and a.tabid=b.tabid and b.idxtype='U'
into temp tmp_aaa;

unload to tmp_aaa.txt
select a.tabname,
(select d.colname from tmp_aaa c,syscolumns d where c.tabid=d.tabid and c.part1=d.colno),
...
from tmp_aaa a;

select语句大概如此
得到的文本格式为:tabname|col1|col2|...|
然后再对此文本处理
awk -F"|" '{printf $1"|"$2;for(i=3;i<NF;i++)if($i!=NULL)printf ","$i}print "|"}' tmp_aaa.txt
输出的就是要求的格式。

有多个表的话,你就放到脚本里处理吧

论坛徽章:
0
9 [报告]
发表于 2009-09-20 00:23 |只看该作者
非常感谢楼上的帮助。
这下应该可以解决了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP