检索数据库表的架构的供应商不稳定方式



我目前正在在工作中构建一个应用程序,在该应用程序中,用户可以定义各种方法,以将数据路由到各种存储技术。这些包括传统的关系数据库系统。

如果他们配置的方式不适用于定义的数据库架构,即如果列类型不匹配。

我一直在寻找一种可靠的供应商 - 敏捷的方法来检索数据库表的数据类型,理想情况下包括它们映射到的CLR类型。

到目前为止,我已经努力寻找甚至不错的东西。我偶然发现的许多解决方案都不是供应商 - 敏捷,并且有关.NET(CORE(中包含的数据库技术的许多工具是SQL Server的特定的。

最受欢迎的方法似乎是通过IDbConnection对象上的GetSchema方法,但是该方法也充满了实现的特定细节,并且没有给出非常愉快的使用结果。我已经能够检索每种类型的文本表示形式,例如,对于Postgres来说,我最接近的是类型的实际人类可读描述。VARCHAR显示为"长度长字符串",很难解析。

.net(core(的大多数数据库交互库摘要摘要诸如数据集,数据表,dataReader等的原始库,以及通常直接映射到对象,从而删除了我可以使用的任何用途。

>

获得表格架构的最简单方法是什么?

为了清楚起见,我们现在希望支持以下数据库技术:

  • SQL Server
  • PostgreSQL
  • mysql/mariadb
  • sqlite
  • Oracle RDMBS

谢谢!

这听起来确实像您必须支付的东西,因为即使存在,它也是如此狭窄的用例。我很难相信这将是一个维护的开源项目。

当这样说,也许您可以使用类似的内容直接查询数据库来解决它:

select *
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME='tableName'

取自https://stackoverflow.com/a/18298685/1387545

我检查了,似乎至少适用于前两个数据库。我认为找到某种SQL查询是您对通用解决方案的最佳选择。由于SQL是他们共享的技术。

但是,我认为您将通过为每个数据库的数据库表构建自己的特定解析器来获得更好的结果。当然,这一切都取决于时间和预算。

最新更新