相关疑难解决方法(0)

psql的备用输出格式

我在Ubuntu上使用PostgreSQL 8.4.我有一个列的表c1通过cN.列足够宽,选择所有列会导致一行查询结果多次换行.因此,输出难以阅读.

当查询结果只构成几行时,如果我可以查看查询结果以使每行的每列都在一个单独的行上,那将会很方便,例如

 c1: <value of row 1's c1>
 c2: <value of row 1's c1>
 ...
 cN: <value of row 1's cN>
 ---- some kind of delimiter ----
 c1: <value of row 2's c1>
 etc.
Run Code Online (Sandbox Code Playgroud)

我在服务器上运行这些查询,我不想安装任何其他软件.是否有psql设置可以让我做那样的事情?

postgresql output-formatting psql

286
推荐指数
7
解决办法
17万
查看次数

如何检查给定模式中是否存在表

Postgres 8.4及更高版本的数据库包含public模式中的模式和公司特定表中的公用表company.
company模式名称始终'company'以公司编号开头并以公司编号结束.
所以可能有以下模式:

public
company1
company2
company3
...
companynn
Run Code Online (Sandbox Code Playgroud)

应用程序始终适用于单个公司.
search_path相应指定在ODBC或连接Npgsql的字符串,如:

search_path='company3,public'
Run Code Online (Sandbox Code Playgroud)

如何检查给定表是否存在于指定的companyn模式中?

例如:

select isSpecific('company3','tablenotincompany3schema')
Run Code Online (Sandbox Code Playgroud)

应该返回false,并

select isSpecific('company3','tableincompany3schema')
Run Code Online (Sandbox Code Playgroud)

应该回来true.

在任何情况下,该函数应仅检查companyn传递的模式,而不检查其他模式.

如果两者public和传递的模式中都存在给定的表,则该函数应该返回true.
它适用于Postgres 8.4或更高版本.

sql database postgresql information-schema search-path

133
推荐指数
2
解决办法
14万
查看次数

表名作为PostgreSQL函数参数

我想在Postgres函数中传递一个表名作为参数.我试过这段代码:

CREATE OR REPLACE FUNCTION some_f(param character varying) RETURNS integer 
AS $$
    BEGIN
    IF EXISTS (select * from quote_ident($1) where quote_ident($1).id=1) THEN
     return 1;
    END IF;
    return 0;
    END;
$$ LANGUAGE plpgsql;

select some_f('table_name');
Run Code Online (Sandbox Code Playgroud)

我得到了这个:

ERROR:  syntax error at or near "."
LINE 4: ...elect * from quote_ident($1) where quote_ident($1).id=1)...
                                                             ^

********** Error **********

ERROR: syntax error at or near "."
Run Code Online (Sandbox Code Playgroud)

以下是更改为此时出现的错误select * from quote_ident($1) tab where tab.id=1:

ERROR:  column tab.id does not exist
LINE 1: ...T EXISTS …
Run Code Online (Sandbox Code Playgroud)

postgresql function dynamic-sql plpgsql identifier

69
推荐指数
4
解决办法
7万
查看次数

重构PL/pgSQL函数以返回各种SELECT查询的输出

我写了一个函数,输出一个SELECT以文本形式组成的PostgreSQL 查询.现在我不想再输出文本,但实际上SELECT对数据库运行生成的语句并返回结果 - 就像查询本身一样.

到目前为止我所拥有的:

CREATE OR REPLACE FUNCTION data_of(integer)
  RETURNS text AS
$BODY$
DECLARE
   sensors varchar(100);   -- holds list of column names
   type    varchar(100);   -- holds name of table
   result  text;           -- holds SQL query
       -- declare more variables

BEGIN
      -- do some crazy stuff

      result := 'SELECT\r\nDatahora,' || sensors ||
      '\r\n\r\nFROM\r\n' || type ||
      '\r\n\r\nWHERE\r\id=' || $1 ||'\r\n\r\nORDER BY Datahora;';

      RETURN result;
END;
$BODY$
LANGUAGE 'plpgsql' VOLATILE;
ALTER FUNCTION data_of(integer) OWNER TO postgres;
Run Code Online (Sandbox Code Playgroud)

sensors …

sql database postgresql dynamic-sql plpgsql

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

Postgres数据类型转换

我的数据库是Postgres 8.我需要将数据类型转换为另一个.这意味着,列数据类型之一是varchar并且需要intSELECT语句中将其转换为Postgres .

目前,我获取字符串值并将其转换int为Java.
有什么办法吗?示例代码将受到高度赞赏.

java sql postgresql casting

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

查询PostgreSQL中表的架构细节?

我需要知道PostgreSQL中的列类型(即varchar(20)).我知道我可能会\d在psql中使用某些内容找到它,但我需要使用select查询来完成它.
这在PostgreSQL中是否可行?

postgresql types dynamic-sql information-schema

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

用空值替换空字符串

我正在将一个庞大的表按计数汇总到一个新表中,在该表中我想将所有空字符串更改为NULL,并同时对一些列进行类型转换。我通读了一些帖子,但找不到查询,这使我可以在单个查询中跨所有列进行查询,而无需使用多个语句。

让我知道是否可以遍历所有列,并将单元格替换为具有null的空字符串。

参考:如何使用SQL Server将空格转换为空值?

string postgresql null replace plpgsql

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