标签: database-metadata

如何检查NHibernate(或Fluent)是否存在表?

什么是检查NHibernate中是否存在表(或使用Fluent-NHibernate)的最佳,最一致的方法?

它甚至可能吗?我的意思是对于如此重型的ORM来说,这似乎是一项简单的任务.

另外在一个相关问题上,您可以检查NHibernate是否存在一组表或整个模式吗?

nhibernate orm fluent-nhibernate database-metadata

5
推荐指数
1
解决办法
4246
查看次数

name已被现有对象使用

在这段代码中,我试图删除表,如果它们每次运行程序时已经存在,但控件不在if语句中.table1table2存在于数据库中.我在我的数据库中检查过.由于它不在if语句中,所以当我尝试创建表时,它在最后一行给出了以下错误:ORA-00955: name is already used by an existing object.我究竟做错了什么?

    Statement statement = connection.createStatement();
    DatabaseMetaData md = connection.getMetaData(); 
    String[] types = {"TABLE"};
    ResultSet rs1 = md.getTables(null, null, "table1",types );
    if (rs1.next()) {
        System.out.println(rs1.getString(3));
        statement.executeUpdate("drop table table1");
    }
    rs1.close();

    ResultSet rs2 = md.getTables(null, null, "table2", types);
    if (rs2.next()) {
        statement.executeUpdate("drop table table2");
    }
    rs2.close();
    statement.executeUpdate("create table table1(" +.....
Run Code Online (Sandbox Code Playgroud)

java sql oracle database-metadata ora-00955

5
推荐指数
2
解决办法
1408
查看次数

JDBC自动查询变得非常慢

我正在维护一个通过JDBC创建Oracle DB的应用程序.从今天开始这个查询:

SELECT  NULL                                                   AS pktable_cat  ,
        p.owner                                                AS pktable_schem,
        p.table_name                                           AS pktable_name ,
        pc.column_name                                         AS pkcolumn_name,
        NULL                                                   AS fktable_cat  ,
        f.owner                                                AS fktable_schem,
        f.table_name                                           AS fktable_name ,
        fc.column_name                                         AS fkcolumn_name,
        fc.position                                            AS key_seq      ,
        NULL                                                   AS update_rule  ,
        DECODE (f.delete_rule, 'CASCADE', 0, 'SET NULL', 2, 1) AS delete_rule  ,
        f.constraint_name                                      AS fk_name      ,
        p.constraint_name                                      AS pk_name      ,
        DECODE(f.deferrable, 'DEFERRABLE',5 ,'NOT DEFERRABLE',7 , 'DEFERRED', 6 ) deferrability
FROM    all_cons_columns pc,
        all_constraints p  ,
        all_cons_columns fc,
        all_constraints f
WHERE   1                      = …
Run Code Online (Sandbox Code Playgroud)

java sql oracle jdbc database-metadata

5
推荐指数
1
解决办法
1269
查看次数

使用Java从oracle数据库中仅获取过程的方法

我只需要使用java DatabaseMetaData获取过程,但此方法还返回函数的名称.

DatabaseMetaData dbmd=con.getMetaData();
ResultSet result = dbmd.getProcedures(null, Ousername, null); 
Run Code Online (Sandbox Code Playgroud)

java procedure resultset database-metadata

5
推荐指数
1
解决办法
155
查看次数

将mysql表内容从一台服务器复制到另一台服务器

如何从服务器复制一个表一个数据库DB1到服务器数据库DB2

我能够将一个表从一个数据库复制到服务器中的另一个数据库,但不能跨越服务器.

CREATE TABLE recipes_new LIKE production.recipes; 
INSERT recipes_new SELECT * FROM production.recipes;
Run Code Online (Sandbox Code Playgroud)

我正在做的所有事情是减少服务器负载,以便我可以将表信息复制到另一个服务器并在那里运行我的查询...

php mysql database-metadata

4
推荐指数
2
解决办法
9802
查看次数

信息模式中referential_constraints.unique_constraint_* 列的NULL 值

在 Postgres 10 中我声明了以下内容:

create table test_abc (
    pk integer not null,
    id integer not NULL,
    id2 integer not null,
    PRIMARY KEY (pk)
);
CREATE UNIQUE INDEX test_abc_ids ON test_abc(id,id2);
Run Code Online (Sandbox Code Playgroud)

然后是第二个表,其中 FK 引用第一个表:

create table test_def (
    id integer not null,
    abc_id integer,
    abc_id2 integer,
    PRIMARY KEY (id),
    FOREIGN KEY (abc_id,abc_id2) references test_abc(id,id2)
);
Run Code Online (Sandbox Code Playgroud)

现在考虑此查询的输出:

SELECT unique_constraint_catalog, unique_constraint_schema, unique_constraint_name
FROM   information_schema.referential_constraints r
WHERE  r.constraint_name = 'test_def_abc_id_fkey'
----------------------
NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)

所有unique_constraint_*列都有空值。

Postgres 文档看来这些元列应该包含

包含外键约束引用的唯一或主键约束的 [object] 的名称(始终是当前数据库) …

sql postgresql foreign-keys information-schema database-metadata

4
推荐指数
1
解决办法
676
查看次数


Oracle 12c中SYS.ALL_TAB_COLUMNS和SYS.ALL_TAB_COLS之间的区别

是什么之间的区别ALL_TAB_COLUMNS,并ALL_TAB_COLS在甲骨文12C系统表?在我的数据库中,ALL_TAB_COLUMNS的行数比ALL_TAB_COLS略少.

database-metadata system-tables oracle12c

3
推荐指数
1
解决办法
6724
查看次数

在一个查询中获取所有表/列及其数据类型firebird

我想查询以下内容:所有表及其列和数据类型

我到目前为止从http://www.firebirdfaq.org/faq174/得到了这个

select f.rdb$relation_name, f.rdb$field_name, f.rdb$field_source
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null 
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position
Run Code Online (Sandbox Code Playgroud)

我刚刚添加了上面的代码"f.rdb $ field_source"来向我展示该表上的信息,这应该允许我在此表中找到以下数据类型的数据RDB $ FIELDS

SELECT * from  RDB$FIELDS 
Run Code Online (Sandbox Code Playgroud)

我想在上面的查询中添加如下内容:

select f.rdb$relation_name, f.rdb$field_name, f.rdb$field_source
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null 
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position
Run Code Online (Sandbox Code Playgroud)

再加上以下需要发生:

select  a.RDB$FIELD_TYPE from RDB$FIELDS 
where …
Run Code Online (Sandbox Code Playgroud)

firebird database-metadata

3
推荐指数
1
解决办法
2057
查看次数

如何获取 PostgreSQL 中表上所有索引的列名列表?

我有这个查询来获取表上的索引列表:

SELECT
    ns.nspname as schema_name,
    tab.relname as table_name,
    cls.relname as index_name,
    am.amname as index_type,
    idx.indisprimary as is_primary,
    idx.indisunique as is_unique
FROM
    pg_index idx
INNER JOIN pg_class cls ON cls.oid=idx.indexrelid
INNER JOIN pg_class tab ON tab.oid=idx.indrelid
INNER JOIN pg_am am ON am.oid=cls.relam
INNER JOIN pg_namespace ns on ns.oid=tab.relnamespace
WHERE ns.nspname = @Schema AND tab.relname = @Name
Run Code Online (Sandbox Code Playgroud)

它似乎工作正常。但现在我需要对列列表进行查询,但我无法理解系统视图的工作方式。

具体来说,我正在寻找的是:

  • [用于匹配第一个查询的索引名称或 id]
  • 索引中的顺序
  • 列名
  • 上升或下降
  • 排序列或包含列

理想情况下,我想一次获得给定表的所有索引的上述项目。


请注意,我正在寻找的不仅仅是列名。

postgresql database-metadata database-indexes

3
推荐指数
1
解决办法
2038
查看次数

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

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

第一列名称是"LIKE'%A%'"(意思是它包含子字符串"A"),第二列名称是"LIKE'%B%'"(意思是它包含子字符串"B").

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

SELECT s.TABLE_NAME 
FROM (SELECT COLUMN_NAME, TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME LIKE '%A%'
    UNION
    SELECT COLUMN_NAME, TABLE_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE COLUMN_NAME LIKE '%B%') s
WHERE EXISTS (SELECT COLUMN_NAME, s.TABLE_NAME 
              FROM INFORMATION_SCHEMA.COLUMNS
              WHERE COLUMN_NAME LIKE '%A%')
AND EXISTS (SELECT COLUMN_NAME, s.TABLE_NAME
            FROM INFORMATION_SCHEMA.COLUMNS
            WHERE COLUMN_NAME LIKE '%B%');  
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server information-schema database-metadata

2
推荐指数
1
解决办法
572
查看次数

获取Oracle表的列名、数据类型、大小和注释

如何获取表的列名、数据类型、大小和注释?

我试过

SELECT all_tab.column_name, all_tab.data_type, all_tab.data_length, col_com.COMMENTS 
    FROM all_tab_columns all_tab
        JOIN user_col_comments col_com ON all_tab.TABLE_NAME = col_com.TABLE_NAME
    WHERE all_tab.TABLE_NAME='MY_TABLE'
Run Code Online (Sandbox Code Playgroud)

但它没有用。

sql oracle database-metadata sqldatatypes tablecolumn

2
推荐指数
1
解决办法
5367
查看次数