问题标签 [database-metadata]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1682 浏览

sql-server - 在 SQL Server 中查找包含两个特定列的表

我想在 SQL Server 中找到包含两个特定单独列的所有表。

第一列名称是“LIKE '%A%'”(意味着它包含子字符串“A”),第二列名称是“LIKE '%B%'”(意味着它包含子字符串“B”)。

我写了以下查询,我想检查它的正确性:

0 投票
1 回答
740 浏览

c# - 实体框架实体不在 DataSpace.OSpace (_workspace.GetItemCollection(DataSpace.OSpace)) 但在 DataSpace.CSpace

我一直在用XMLs 来表示实体框架。我试图创建一种可以在运行时注入属性的实体,首先我创建DynamicEntity了动态对象

然后实体继承自此

public partial class QUOTE_HOUSE : DynamicEntity

(当我从数据库获取数据后手动设置属性时,它似乎确实有效)。

因此,基于这种删除属性的机制,我尝试做另一个将属性插入 XML 的机制,并且整个事情似乎都还不错(至少它不会像 XML 不正确时通常那样做映射var mappingCollection = new StorageMappingItemCollection(conceptualCollection, storageCollection, new[] {mappingXml.CreateReader()});)。

执行查询时出现问题是 EF

实体类型 QUOTE_HOUSE 不是当前上下文模型的一部分。

说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.InvalidOperationException:实体类型 QUOTE_HOUSE 不是当前上下文模型的一部分。

[InvalidOperationException:实体类型 QUOTE_HOUSE 不是当前上下文模型的一部分。]
System.Data.Entity.Internal.InternalContext.UpdateEntitySetMappingsForType(Type entityType) +208
System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType ) +50

TryUpdateEntitySetMappingsForType我在System.Data.Entity.Internal.InternalContext加载 pdb 后追踪到EF

基本上我发生的事情QUOTE_HOUSE不在试图从this._workspace.GetItemCollection(DataSpace.OSpace)哪里映射它。UpdateEntitySetMappings

它检查它是否存在this._entitySetMappingsCache.ContainsKey(entityType)),因为它不是它然后尝试更新映射迭代this._workspace.GetItemCollection(DataSpace.OSpace)我的项目不存在的位置

但是我可以看到我的实体确实存在于this._workspace.GetItems<EntityContainer>(DataSpace.CSpace).

完整UpdateEntitySetMappings外观如下:

实体如何进入 this._workspace.GetItemCollection(DataSpace.OSpace)?为什么实体会在CSpace而不是在OSpace

编辑: 对于那些可能想要破解赏金的人,以下是您可能需要设置环境以重现问题的组件。

首先从 db 生成的实体,(DynamicEntity代码在上面)

数据库的 DbContext 需要构造函数重载

进行列注入的机制(它是一个粗略的原型,所以请原谅它看起来有多糟糕),当注入尝试字符串列时,我知道它映射正常。

初始化:

您应该能够从实体生成 oracle 数据库QUOTE_HOUSE并输入一些虚拟值,不要认为您需要视图,因为它会爆炸.ToList()。生成数据库后,将附加列添加到数据库而不是模型(alter table QUOTE_HOUSE add TESTCOL Varchar2(20)) - 使数据库中的列在运行时注入模型中。您可能还需要在此处调试 EF 程序集,这是如何进行的。如果您需要更多信息或我遗漏了什么,请告诉我。

0 投票
2 回答
85 浏览

java - DatabaseMetaData.ownDeletesAreVisible vs DatabaseMetaData.deletesAreDetected 争议

我将 JDBC 与 mysql-connector-java-6.0.2.jar 一起使用,除非我做错了什么,否则我认为 DatabaseMetaData.ownDeletesAreVisible 和 DatabaseMetaData.deletesAreDetected 实现在彼此之间以某种方式不一致。

以下是 JDBC 规范关于 ownDeletesAreVisible 的说明:

" ...如果删除的行被删除或替换为空行,则DatabaseMetaData.ownDeletesAreVisible(int type)方法将返回true。如果ResultSet对象仍然包含已删除的行,则返回false,这意味着删除不作为对给定类型的 ResultSet 对象的更改可见... "

关于 deletesAreDetected:

...如果从 ResultSet 对象中删除的行被删除,则方法 deletesAreDetected 返回 false,如果删除的行被空行或无效行替换,则返回 true...

我将输出添加为注释:

0 投票
0 回答
1176 浏览

metadata - 视图的完整列元数据?

如果您从 中查询表dbc.columns,您将获得每一列的完整元数据,尤其是数据类型、长度、可空/不可空等。查询视图时,您只会获得数据库、表和列名。所有其他字段为空。

如果我有一个除了 之外什么都不做的select * from table视图,那么当它被编译为数据库对象时,基础表的元数据似乎会传播到视图。这即使对于计算列也是有意义的,因为我的实验表明 Teradata 分析所有可能的逻辑路径以确定计算列的类型。这是一个例子:

在那个 case 语句中,只有第一个条件会返回 true,所以结果总是'a'. 但是,当您查看表 DDL 时,您可以看到它计算的列VARCHAR(4)证明它分析了所有情况:

因此,假设此视图元数据存在于某处似乎是合理的,即使通过 DBC 查询该视图会导致除上述列之外的所有列都为空。

0 投票
1 回答
53 浏览

java - DatabaseMetaData 程序未获取表名

我创建了一个程序来使用 rt 从用户 rt 获取所有表名DatabaseMetaData,尽管该程序已成功编译并且运行它并没有获取表名。它运行并显示表列表:然后没有名称。程序退出。

这里的任何人都可以帮助我在我的程序中找到错误的逻辑。

0 投票
1 回答
447 浏览

ssis - 从 SSIS 中的 OLE DB 源获取第二个数据集

我需要从 DB1 读取数据并将它们写入另一个 DB2。我使用带有 CTE 和临时表的复杂查询,不,我不能将此查询放在 SProc 中。我使用 OLE DB 源和 OLE DB 目标。

当我将查询作为 SQL 命令放在 OLEDBSource 中时,我通常会抱怨由于 CTE 正在使用临时表而无法确定元数据。

我不能使用“带有结果集”的解决方法,因为它不是 SProc。所以我尝试了另一种解决方法,“SET FMTONLY ON/OFF”。

现在 OLE DB 源接受我的查询,但它输出两个数据集,第一个是空的,第二个是我需要的数据。OLE DB 目标不写入单行,因为它只读取第一个结果集,即空结果集。

我该如何解决这个问题?

我无法更改其他临时表,基本上我无法更改查询。如果可能,我正在寻找 SSIS 解决方案,而不是 SQL 解决方案。谢谢。

0 投票
0 回答
458 浏览

java - DatabaseMetaData.getColumns 返回相似命名表的列

在我的数据库中,我有两个表的不同列的“EMPLOYEE_DETAILS”和“EMPLOYEE DETAILS”表。当我使用 DatabaseMetaData (java.sql.DatabaseMetaData) 的 getColumns() 方法获取表“EMPLOYEE_DETAILS”的列详细信息时,我得到了“EMPLOYEE_DETAILS”和“EMPLOYEE DETAILS”的列。

我已经为数据库 Oracle、MySql 和 MSSQL 尝试过这个。结果是一样的。

我用来调用 getColumns 方法的代码如下:

谁能帮我解决这个问题。

0 投票
1 回答
39 浏览

java - ojdbc:tomcat/weblogic:如何重置连接元数据的 cusror

试图从连接/数据库元数据中获取列的元数据。有什么方法可以使用rs.beforeFirst()或任何替代方法来向后移动光标?

以下是代码片段:

参考:

  • 数据库元数据

  • 在 Tomcat 7/8 和 WebLogic 11/12 上使用 JNDI 数据源打开/配置连接。

0 投票
0 回答
670 浏览

java - DatabaseMetaData.getColumns() 中缺少列

DatabaseMetaData.getColumns()的 Java 7 Javadoc说它返回一个包含 24 列的ResultSet,第一个名为TABLE_CAT,最后一个名为IS_GENERATEDCOLUMN。但是,我从 Oracle 收到的结果集只有 18 列。我用以下代码验证了它:

上面的代码产生这个输出:

为什么我没有得到所有 24 列?我错过了什么?

0 投票
2 回答
79 浏览

sql - 从类似于 EAV 的元数据驱动模式查询数据

我们有一个类似于 EAV 的数据模型。但是,我们的属性集有限。在我们的数据模型中,我们存储个人完成的不同活动,并且根据活动类型,属性会有所不同。

我们想要获取个人的活动和相应的属性/值。我已经描述了ActivityActivityDetails表和预期的结果集。

您能否指导我如何从数据模型中得出预期的结果集?我们必须做某种旋转。但是,不确定是否会达到相同的程度。

在下面的示例数据中,ClickURL是一个 Activity。它具有三个属性:URLAddressClickCountClickDate。三个属性对应的值为:www.companyurl.com , 10 , 20140101

结果集应如下所示:

我们的数据模型和预期结果

带数据的示例查询