Tag: postgresql

如果不存在则插入,否则返回postgresql中的id

我在PostgreSQL中有一个简单的表,它有三列: id串行主键 key varchar 值varchar 我已经在这里看到这个问题SO: 插入,在PostgreSQL重复更新? 但我想知道如何获得id,如果它存在,而不是更新。 如果标准做法总是要么“插入”,要么“如果存在就更新”,那为什么呢? 执行SELECT(LIMIT 1)的代价是否比执行UPDATE更大? 我有以下代码 INSERT INTO tag ("key", "value") SELECT 'key1', 'value1' WHERE NOT EXISTS ( SELECT id,"key","value" FROM tag WHERE key = 'key1' AND value = 'value1' ); 它的工作原理是它不插入,如果存在,但我想要得到的ID。 有没有“RETURNING ID”条款或类似的东西,我可以在那里?

等于(=)和IN之间的性能差异与一个值

当我们使用等号和IN运算符具有相同的值时,SQL引擎如何不同? 执行时间是否改变? 第一个使用平等检查运算符 WHERE column_value = 'All' 第二个使用OR运算符和单值 WHERE column_value IN ('All') SQL引擎是否将IN更改为=如果只有一个值? MySQL和PostgreSQL中有没有区别?

无法使用pgAdmin将PostgreSQL连接到远程数据库

我在我的本地服务器(Ubuntu)上安装了PostgreSQL,IP为192.168.1.10。 现在,我试图从我的客户机(Ubuntu)访问数据库与IP地址192.168.1.11与pgAdmin。 我知道我必须在postgresql.conf和pg_hba.conf中进行更改以允许客户端进行连接。 你能指导我吗?

如何从SQL查询获取第一个和最后一个logging?

我在PostgreSQL中有一个表,我用几个条件运行一个查询,返回多个行,按列之一sorting。 一般来说是这样的: SELECT <some columns> FROM mytable <maybe some joins here> WHERE <various conditions> ORDER BY date DESC 现在我只想从这个查询中获取第一行和最后一行。 我可以把它们放在数据库之外,在我的应用程序内部(这是我实际上做的),但是想知道为了获得更好的性能,我不应该从数据库中得到那些我实际上感兴趣的2条logging。 如果是这样,我该如何修改我的查询?

编码UTF8与语言环境en_US不匹配; select的LC_CTYPE设置需要编码LATIN1

在尝试安装opennms时: /usr/share/opennms/bin/install -l /usr/local/lib -dis 我得到的错误: 错误:编码UTF8与区域设置en_US不匹配详细信息:select的LC_CTYPE设置需要编码LATIN1。 我不知道如何继续,因为我尝试了几种不同的方式创build数据库(见下文)。 完整日志: ============================================================================== OpenNMS Installer ============================================================================== Configures PostgreSQL tables, users, and other miscellaneous settings. – searching for jicmp: – trying to load /usr/local/lib/libjicmp.so: NO – trying to load /usr/lib/jni/libjicmp.so: OK – searching for jicmp6: – trying to load /usr/local/lib/libjicmp6.so: NO – trying to load /usr/lib/jni/libjicmp6.so: OK – searching […]

如何从命令行打印CSV或TSV格式的PostgreSQL查询结果?

我希望从shell执行查询(不在交互式psql客户端中),并将输出的CSV或TSV表示forms打印到STDOUT。 你怎么用psql或者PostgreSQL命令行工具之一来做到这一点?

Heroku Postgres错误:PGError:错误:关系“组织”不存在(ActiveRecord :: StatementInvalid)

我在将Heroku应用程序部署到Heroku时出现问题,在尝试访问应用程序时出现此错误: PGError:错误:关系“组织”不存在(ActiveRecord :: StatementInvalid) SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"organizations"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum 任何人有任何想法? 这对我来说是第一次,尤其是因为我已经在Heroku上工作了一年,还没有看到类似的东西。 当然,一切工作在本地的SQLite。 提前感谢任何帮助! – 标记

Postgres错误“参数”TimeZone“的无效值:”UTC“”

Jupitor$ bundle exec rake db:create db:migrate APP_development already exists rake aborted! PG::Error: ERROR: invalid value for parameter "TimeZone": "UTC" : SET time zone 'UTC' 试图迁移到我的postgres数据库时,我不断收到此错误。 帮助将不胜感激!

如何使用postgres在表中的第二或第三列之后的表中添加新的列?

如何使用postgres在表中的第二或第三列之后的表中添加新的列? 我的代码如下所示 ALTER TABLE n_domains ADD COLUMN contract_nr int after owner_id

如何在PostgreSQL中的函数内返回SELECT的结果?

我在PostgreSQL中有这个函数,但我不知道如何返回查询的结果: CREATE OR REPLACE FUNCTION wordFrequency(maxTokens INTEGER) RETURNS SETOF RECORD AS $$ BEGIN SELECT text, count(*), 100 / maxTokens * count(*) FROM ( SELECT text FROM token WHERE chartype = 'ALPHABETIC' LIMIT maxTokens ) as tokens GROUP BY text ORDER BY count DESC END $$ LANGUAGE plpgsql; 但是我不知道如何在PostgreSQL函数中返回查询的结果。 我发现返回types应该是SETOF RECORD ,对不对? 但是,返回命令是不正确的。 什么是正确的方法来做到这一点?