相关疑难解决方法(0)

如果不存在,PostgreSQL创建表

在MySQL脚本中,您可以编写:

CREATE TABLE IF NOT EXISTS foo ...;
Run Code Online (Sandbox Code Playgroud)

... 其他的东西 ...

然后您可以多次运行该脚本而无需重新创建表.

你如何在PostgreSQL中做到这一点?

sql postgresql ddl create-table database-table

148
推荐指数
4
解决办法
17万
查看次数

截断Postgres数据库中的所有表

我经常需要在重建之前删除PostgreSQL数据库中的所有数据.我将如何直接在SQL中执行此操作?

目前我已经设法提出一个SQL语句,它返回我需要执行的所有命令:

SELECT 'TRUNCATE TABLE ' ||  tablename || ';' FROM pg_tables WHERE tableowner='MYUSER';
Run Code Online (Sandbox Code Playgroud)

但是,一旦拥有它们,我就无法以编程方式执行它们.

postgresql truncate dynamic-sql plpgsql database-table

142
推荐指数
8
解决办法
13万
查看次数

PostgreSQL列名称区分大小写吗?

我有一个db表说,persons在Postgres中由另一个有列名称的团队传下来,"first_Name".现在我正在尝试使用PG指令器在此列名称上查询此表.

select * from persons where first_Name="xyz";
Run Code Online (Sandbox Code Playgroud)

它只是回归

错误:列"first_Name"不存在

不确定我是在做一些愚蠢的事情,还是我找不到这个问题的解决方法?

sql postgresql case-sensitive case-insensitive identifier

138
推荐指数
3
解决办法
9万
查看次数

如果在PostgreSQL上不存在列,如何添加列?

问题很简单.如何将列添加x到表中y,但仅当x列不存在时?我在这里找到了解决方法,如何检查列是否存在.

SELECT column_name 
FROM information_schema.columns 
WHERE table_name='x' and column_name='y';
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.1

128
推荐指数
5
解决办法
10万
查看次数

如何在所有表中搜索特定值(PostgreSQL)?

是否可以在PostgreSQL中搜索每个表的每一列中的特定值?

Oracle 提供类似的问题.

postgresql grep string-matching

93
推荐指数
8
解决办法
10万
查看次数

快速发现PostgreSQL中表的行数

我需要知道表中的行数来计算百分比.如果总计数大于某个预定义常量,我将使用常量值.否则,我将使用实际的行数.

我可以用SELECT count(*) FROM table.但是如果我的常量值是500,000并且我的表中有5,000,000,000行,那么计算所有行会浪费很多时间.

一旦超过常数值,是否可以停止计数?

只要它低于给定的限制,我只需要确切的行数.否则,如果计数高于限制,我会使用限制值,并希望尽快得到答案.

像这样的东西:

SELECT text,count(*), percentual_calculus()  
FROM token  
GROUP BY text  
ORDER BY count DESC;
Run Code Online (Sandbox Code Playgroud)

sql postgresql row count

89
推荐指数
3
解决办法
7万
查看次数

search_path如何影响标识符解析和"当前架构"

是否可以定义默认情况下创建新表的模式?(由"不合格的表名称"引用.)

我已经看到了在Postgres中使用"搜索路径"的一些细节,但我认为它只在检索数据时有效,而不是创建.

我有一堆SQL脚本,它们创建了许多表.我没有修改脚本,而是希望默认情况下在特定模式中设置数据库创建表 - 当它们具有非限定名称时.

这可能吗?

postgresql schema search-path database-table

46
推荐指数
2
解决办法
3万
查看次数

在Postgres 9.1中确定表的OID?

有谁知道如何在Postgres 9.1中找到表的OID?我正在编写一个更新脚本,需要在尝试创建列之前测试表中是否存在列.这是为了防止脚本在第一次出错后运行.

postgresql postgresql-9.1

31
推荐指数
3
解决办法
3万
查看次数

检查Postgres中是否存在序列(plpgsql)

我试图在存储过程中测试序列是否已经存在.

IF EXISTS SEQUENCE seq_name
    RAISE EXCEPTION 'sequence % already exists!', seq_name
END IF;
Run Code Online (Sandbox Code Playgroud)

我已经尝试过几个不同的片段变形而没有运气.我必须向谷歌提供错误的条款,因为我似乎无法找到关于该主题的任何内容.任何帮助表示赞赏!

postgresql stored-procedures plpgsql

23
推荐指数
4
解决办法
3万
查看次数

如果不存在,如何创建序列

我试图使用Check中的代码来确定Postgres中是否存在序列(plpgsql).

如果序列不存在则创建序列.两次运行此代码会导致异常:

序列......已经存在.

如果序列不存在,如何创建序列?

如果序列不存在,则不应写入任何消息且不应发生错误,因此我不能在该问题的另一个答案中使用存储过程,因为如果序列存在,它每次都会将消息写入日志文件.

do $$
begin

SET search_path = '';
IF not EXISTS (SELECT * FROM pg_class
             WHERE relkind = 'S'
               AND oid::regclass::text = 'firma1.' || quote_ident('myseq'))
  THEN

SET search_path = firma1,public;

create sequence myseq;

END IF;

SET search_path = firma1,public;

end$$;

select nextval('myseq')::int as nr;
Run Code Online (Sandbox Code Playgroud)

sql postgresql database-design plpgsql postgresql-9.2

21
推荐指数
3
解决办法
4万
查看次数