来自Postgresql数据库的元数据

用户名

我想通过查询从PostgreSql数据库获取有关所有关系的数据

SELECT
    [creatorUser].[primTableName].[primColumnName] AS primary_column,
    [creatorUser].[foreignTableName].[foreignColumnName] AS foreign_column,
FROM
    sys.sysidx    si,
    sysidxcol     sic,
    sys.SYSFKCOL  sfc,
    sysusers      su,
    sys.systable  st,
    sys.syscolumn sc
WHERE
    si.table_id=sic.table_id AND
    si.index_id=sic.index_id AND
    sfc.primary_column_id=sic.primary_column_id AND
    sfc.foreign_table_id=sic.table_id AND
    st.table_id=sfc.foreign_table_id AND
    su.uid=st.creator AND
    sc.column_name=si.index_name

有人可以帮忙,如何获取该数据?如何成为正确的查询

owner1.table1.primCol1 owner1.table1.foreignCol1
owner1.table1.primCol2 owner1.table1.foreignCol2
 ..

克雷格·林格

PostgreSQL没有sys表,因此不清楚您如何期望该查询工作。根据您的评论,我想这就是您在Sybase上使用的查询,并且您想将其转换为PostgreSQL。

好吧,假设Sybase语法为:

[creatorUser].[primTableName].[primColumnName] AS primary_column,
[creatorUser].[foreignTableName].[foreignColumnName] AS foreign_column,

的意思是“连接创建关系,表名和列名的用户”,我可能会在PostgreSQL中做一些事情,例如:

SELECT 
  format('%I.%I.%I', fk.table_schema, fk.table_name, fk.column_name) AS foreign_side,
  format('%I.%I.%I', pk.table_schema, pk.table_name, pk.column_name) AS target_side
FROM 
  information_schema.referential_constraints rc 
  INNER JOIN information_schema.key_column_usage fk 
    ON (rc.constraint_catalog = fk.constraint_catalog 
        AND rc.constraint_schema = fk.constraint_schema 
        AND rc.constraint_name = fk.constraint_name) 
  INNER JOIN information_schema.constraint_column_usage pk 
    ON (rc.unique_constraint_catalog = pk.constraint_catalog 
        AND rc.unique_constraint_schema = rc.constraint_schema 
        AND rc.unique_constraint_name = pk.constraint_name);

除此之外,还format(...)可以运用于Sybase。

输出像:

    foreign_side     |           target_side           
---------------------+---------------------------------
 public.users.id_cat | public.usercategories.id_numcat
(1 row)

那是schema.table.column。在这种情况下,我猜测Sybase的“ creatorUser”实际上是“模式”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章