关于pgsql的问题

时间:2008-09-26 06:09:10

标签: postgresql

我是pgsql的新手。我对此几乎没有质疑:

1)我知道可以通过<schema>.<table_name>访问列,但是当我尝试访问<db_name>.<schema>.<table_name>这样的列时,会抛出错误,如

Cross-database references are not implemented

如何实施?

2)我们有10多个表,6个有2000多行。将它们全部保存在一个数据库中是否可以?或者我应该创建dbs来维护它们吗?

3)从上面有超过2000行的问题表中,对于特定的进程,我需要几行数据。我创建了视图以获取这些行。 例如:一个表包含员工的详细信息,它们分为3种类型;经理,建筑师和工程师。很明显这个表没有得到每个进程...进程用来从它读取数据... 我认为有两种方法可以获取数据SELECT * FROM emp WHERE type='manager',或者我可以为经理,架构师和工程师创建视图并获取数据SELECT * FROM view_manager

你能建议更好的方法吗?

4)视图是否还需要存储空间,如表格吗?

提前完成。

3 个答案:

答案 0 :(得分:1)

  1. CrossGreSQL中存在跨数据库已有多年了。您必须通过数据库名称为数据库的名称添加前缀(当然,还有权对其进行查询)。你会得到这样的东西:

    SELECT alias_1.col1,alias_2.col3 FROM table_1 as alias_1,database_b.table_2 as alias_2 WHERE ...

    如果您的数据库位于另一个实例上,那么您将需要使用dblink contrib。

  2. 这个问题并没有让人感觉到。请完善。
  3. 通常,视图用于简化重用它们的其他查询的编写。在您的情况下,正如您所描述的那样,也许存储的程序会更符合您的需求。
  4. 不,期待视图定义。

答案 1 :(得分:0)

1:解决方法是打开与其他数据库的连接,并且(如果使用psql(1))将其设置为当前连接。但是,只有在不尝试连接两个数据库中的表时才会起作用。

答案 2 :(得分:0)

1)这意味着它不是Postgres支持的功能。我不知道如何创建在多个数据库上运行的查询。

2)这对一个数据库来说没问题。单个数据库可以包含数十亿行。

3)不要打扰创建视图,无论如何,查询都很简单。

4)除了查询定义外,视图不需要数据库中的空间。