我继承了一个充满数据的现有Postgres数据库.大多数数据都有'created_date'列值.在跟踪之前插入了一些早期数据.
有一个Postgres元数据表隐藏在跟踪INSERT查询完成时的某个地方吗?
如何查看Microsoft Access 2013表的元数据(数据字典)?
我想知道例如何时创建或更新实体.我应该创建一个类似于:created-at和/ :update-at或Datomic的属性默认情况下具有这些属性吗?或以任何方式找出实体的创建或更新时间?
我在我的新项目中使用EF Code First.我不打算使用自动迁移功能,并且在db中没有[__MigrationHistory]表.但是通过查看Profiler,我总能看到EF在任何其他查询之前发出这样的查询:
SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[__MigrationHistory] AS [Extent1]
) AS [GroupBy1]
Run Code Online (Sandbox Code Playgroud)
我可以禁用此功能吗?
这个问题最初是由@PrateekGupta提出的
@PrateekGupta想要对多个表执行批量插入操作.
表格之间有外键关系.
如果在插入引用的表之前对具有外键的表执行INSERT操作,则操作可能由于违反外键而失败.
生成根据其依赖关系排序的数据库中的表列表.
没有依赖关系的表(没有外键)将是第1个.
仅在第1组表中具有依赖关系的表将是第2个.
仅在第1或第2组表中具有依赖关系的表将是第3个.
等等...
我试图从Java代码(使用基本JDBC)检索我的Oracle DB的不同类型的元数据.例如,如果我想检索带_FOO后缀的表列表,我可以执行以下操作:
Connection connection = dataSource.getConnection();
DatabaseMetaData meta = connection.getMetaData();
ResultSet tables = meta.getTables(connection.getCatalog(), null, "%_FOO", new String[] { "TABLE" });
// Iterate on the ResultSet to get information on tables...
Run Code Online (Sandbox Code Playgroud)
现在,我想从我的数据库中检索所有序列(例如所有序列命名S_xxx_FOO).
我怎么会这样做,因为我没有看到DatabaseMetaData与序列相关的任何内容?
我是否必须运行查询select * from user_sequences?
我正在使用Spring JdbcUtils.extractDatabaseMetaData()方法来分析数据库.该函数调用回调并移交DatabaseMetaData对象.这个对象提供了getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern).
我称之为这样getColumns("",TABLE_OWNER_USERNAME,null,null) ,结果得到400列.这些正是我想要的结果,但请求需要1分钟.
我可以以某种方式优化此查询以快速?拉动400行应该在1秒而不是1分钟内完成.
编辑:我不怀疑Spring部分很慢.更仔细的分析表明,获取DatabaseMetaData需要花费几秒钟的getColumns()时间非常长.
我正在开发一个 Java 应用程序。我已使用 JDBC 连接连接到 Oracle DB 并获取它的元数据。我从元数据中获取表、列、视图等信息。
现在我想从元数据中分别获取应用程序中表和列的注释。我怎样才能获取这些详细信息?
我在SQL Server中有一个表值函数(TVF),如下所示:
CREATE FUNCTION TVF_xyz(@AuditKey INT)
RETURNS TABLE
AS
RETURN
SELECT *
FROM xyz
WHERE AUDIT_KEY = @AuditKey
GO
Run Code Online (Sandbox Code Playgroud)
现在,我在xyz表中添加了新列。
当我使用查询时TVF_xyz,它不会显示新列(显示除新添加的列以外的所有其他列)。
查询:
SELECT TOP 10 *
FROM TVF_xyz (1543)
Run Code Online (Sandbox Code Playgroud)
我想知道,如何刷新TVF以显示新列。
PS:Select *用于TVF中以获取所有列。
使用 EF Core 的 ASP.NET Core MVC 应用程序。在 Linq to SQL 中,此代码返回数据库表主键列名称的列表:
/// <summary>
/// Database primary key names
/// </summary>
public IList<string> DatabasePrimaryKey(Type dbContextPocoType)
{
List<string> pk = new List<string>();
foreach (PropertyInfo p in dbContextPocoType.GetProperties())
{
var ca = p.GetCustomAttributes(typeof(ColumnAttribute), true);
if (ca.Length == 0) continue;
var atr = (ColumnAttribute)ca.Single();
if (!atr.IsPrimaryKey) continue;
pk.Add(atr.Name);
}
return pk;
}
Run Code Online (Sandbox Code Playgroud)
在 EF Core 中我尝试过
var entry = ctx.Entry(dbContextPocoType);
var primaryKey = entry.Metadata.FindPrimaryKey();
IList<string> keys = primaryKey.Properties.Select(x => x.Name).ToList();
return keys;
Run Code Online (Sandbox Code Playgroud)
但这会返回 …
c# ×2
java ×2
jdbc ×2
sql-server ×2
clojure ×1
database ×1
datomic ×1
foreign-keys ×1
metadata ×1
ms-access ×1
oracle ×1
oracle11g ×1
postgresql ×1
sequence ×1
spring-jdbc ×1