查询整个数据库,过滤表和列,并有联接等

本文关键字:数据库 过滤 查询 | 更新日期: 2023-09-27 18:27:52

背景

我的后端在SQL server 2012中有一个数据库,它有大约20个表(可能会随着时间的推移而增加),每个表最初会有大约100-1000行,将来可能会增加。

现在,我的一位同事开发了一个web应用程序,该应用程序使用这个数据库,并让客户端执行CRUD和常规业务逻辑。

问题

我的任务是为这个web应用程序创建一个报告页面,我将要做的是让客户端能够从所有表中从SQL导出所有深度嵌套对象的所有数据,或者只与所有列耦合,或者只导出少数。。。excel、pdf和其他格式。我可能还需要在我的业务逻辑中查询第三方,以收集进一步的信息(目前断章取义)。

我能做些什么来实现以上目标?

我所知道的

我想不出任何高效且可扩展的解决方案,因为它将涉及100列和20个表。我所能想到的就是为我可能需要的内容添加100个视图,但这听起来也不是粒子。

我应该研究BI或SQL报告,还是应该在使用类似EF的ORM的代码中进行?或者已经有任何开源代码用于此类泛型操作我完全困惑了。

请注意,我问的是使用什么,而不是如何使用。希望我没有冒犯任何人

查询整个数据库,过滤表和列,并有联接等

如果您不关心客户端是否可以访问所有数据库对象名称,那么您可以自己编写一些内容,而不需要太多精力。如果您正在创建一个页面,您可以查询系统视图以获得所有表和列名的列表,以填充某种筛选(下拉列表、列表框等)。

你可以得到所有表格的列表:

select object_id, name from sys.tables

你可以得到每个表所有列的列表:

select object_id, name from sys.columns

object_id是视图之间的公共键。

如果您计划通过SQL进行导出,那么您可以根据导出要求编写一些动态SQL。