0

我是 pgsql 的新手。我有几个问题:

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

Cross-database references are not implemented

我该如何实施?

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

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

你能建议任何更好的方法来做到这一点吗?

4)视图是否也需要存储空间,就像表一样?

提前谢谢。

4

3 回答 3

1
  1. 跨数据库在 PostGreSQL 中已经存在多年了。您必须在数据库名称前加上数据库名称(当然,有权查询它)。你会得到这样的东西:

    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. 不,期待视图定义。
于 2008-10-01T05:25:39.297 回答
0

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

于 2008-09-26T06:20:29.607 回答
0

1)这意味着它不是 Postgres 支持的功能。我不知道有什么方法可以创建在多个数据库上运行的查询。

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

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

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

于 2008-10-01T05:19:48.750 回答