从SQL脚本中提取数据库、架构、表和列名



我需要创建一个电子表格,列出大约100个SQL脚本中每个字段的数据库、模式、表和列名。SQL、Python或R中有什么方法可以做到这一点吗?我目前正在尝试用Python中的字符串提取来实现这一点。

电子表格需要看起来像这样:

列表1表1id地址id得分id性别
数据库 架构
数据库1 schema1id
数据库1 schema1名称
数据库1 schema2 表2
数据库1 schema2 表2
数据库2 schema3 表3
数据库2 schema3 表3
数据库2 schema3 表4
数据库2 schema3 表4

据我所知,没有任何实用程序可以为随机SQL脚本做到这一点。

您可以编译脚本,然后在数据库目录中检查它们的依赖项。问题是,这并不总是能捕获所有内容(如动态SQL(,而且通常不会告诉您列(但这两种列都因DBMS而异(。

如果我必须这样做,我可以这样做:

  1. 复制脚本要使用的数据库。

  2. 编写DDL触发器,该触发器将捕获每一个元数据更改并以标准方式进行报告。

  3. 编写通用DML触发器,捕获每个数据更改的受影响表和列,然后编写一个动态SQL过程,将它们复制到每个表上。

  4. 对我的数据库副本运行脚本。

  5. 收集触发器的输出,然后将其放入Excel中。

即使这样,它仍然会错过东西(因为IF..语句(

我估计这大约需要2-4周的时间(你的里程可能会有所不同(,所以我会将其与阅读每个脚本并手动将数据输入Excel所需的时间进行比较。

最后,我可能会手动完成。


评论中还有几个选项:

编写自己的工具来为您解析脚本:这比一开始听起来要困难得多,SQL解析起来非常困难,但如果您的DBMS有解析SQL脚本的功能,然后为您提供解析树,这可能会起作用(我不知道哪个DBMS可能有这个功能(。

如果这个脚本旨在从头开始创建数据库,那么它很容易:只需运行它,然后从系统目录中收集架构、表和列名。

相关内容

  • 没有找到相关文章

最新更新