雪花信息_schema外键查找

问题描述 投票:0回答:2

有没有办法使用information_schema来识别外键关系?我有一个数据完整性测试方法,使用约束视图结合列视图来动态构建 Pk 和 Uk 测试查询。

我遇到的问题是我找不到可用于构建 Fk 测试查询的 information_schema 视图。我在一篇 10 年前的帖子中发现了对 INFORMATION_SCHEMA.KEY_COLUMN_USAGE 和 CONSTRAINT_COLUMN_USAGE 的引用。然而,我今天看不到这些观点。我必须使用 get_ddl() 函数,当角色没有序列权限时,该函数会导致问题。当使用 information_schema 视图构建查询时,这不是问题。

参考帖子:如何使用 INFORMATION_SCHEMA 查找数据库中所有外键的主键

foreign-keys snowflake-cloud-data-platform information-schema
2个回答
0
投票

查找外键约束的列名的最佳方法是运行:

显示导入的密钥;

这是在上下文中运行的,但也可以与 {IN (ACCOUNT | DATABASE | SCHEMA) } 限定符一起使用。


0
投票

Snow-Flake中没有关键列用法表:

方法如下:

方法 1:(SQL 函数)

在雪花中,首先您验证表是否确实有一些主键和外键,然后开始编写一些查询来处理该表。

如果您之前没有验证过:

  • 很难找到是否需要更改查询或目标表 需要改变。

查询:

SHOW IMPORTED KEYS IN DB_NAME.SCHEMA_NAME.TABLE_NAME ;
SHOW PRIMARY KEYS IN DB_NAME.SCHEMA_NAME.TABLE_NAME;

上述查询可能会返回一些空结果,因为可能存在没有主键和外键的表,并且这必须是返回结果为空的唯一结果

方法2:(解析DDL语句)

这是代码:

获取架构详细信息的Java方法

  • 在此处了解此 SchemaInfo 类并将其转换为您的首选语言。

基本上代码中的方法是:

SELECT GET_DDL('TABLE', 'SCHEMA_DETAILS.'TABLE_NAME'')
  • 确保每当 TABLE_NAME 进入查询时添加一组额外的引号,否则可能会返回表不存在。
  • 这会获取 DDL 语句来创建相同的表
  • 解析DDL语句以了解其中的关系。
  • 解析字符串的逻辑都在代码中提到了
© www.soinside.com 2019 - 2024. All rights reserved.