Tag: postgresql

连接到数据库后切换angular色

是否有可能改变postgresqlangular色的用户在初始连接后与postgres交互时使用? 数据库将用于Web应用程序,我想在连接池上使用表和模式的数据库级规则。 从阅读postgresql文档看来,如果我最初以具有超级用户angular色的用户身份进行连接,则可以切换angular色,但是我更愿意以最低权限进行连接,并根据需要进行切换。 切换时必须指定用户的密码就好了(实际上我更喜欢它)。 我错过了什么? 更新 :我已经按照@Milen的build议尝试了SET ROLE和SET SESSION AUTHORIZATION ,但是如果用户不是超级用户,那么这两个命令似乎都不起作用: $ psql -U test psql (8.4.4) Type "help" for help. test=> \du test List of roles Role name | Attributes | Member of ———–+————+—————- test | | {connect_only} test=> \du test2 List of roles Role name | Attributes | Member of ———–+————+—————- test2 | […]

PostgreSQL INSERT ON CONFLICT UPDATE(upsert)使用所有排除的值

当你插入一行(PostgreSQL> = 9.5)时,你希望可能的INSERT和可能的UPDATE完全一样,你可以这样写: INSERT INTO tablename (id, username, password, level, email) VALUES (1, 'John', 'qwerty', 5, 'john@mail.com') ON CONFLICT (id) DO UPDATE SET id=EXCLUDED.id, username=EXCLUDED.username, password=EXCLUDED.password, level=EXCLUDED.level,email=EXCLUDED.email 有一个更短的路? 只是说:使用所有的EXCLUDE值。 在SQLite中,我曾经这样做过: INSERT OR REPLACE INTO tablename (id, user, password, level, email) VALUES (1, 'John', 'qwerty', 5, 'john@mail.com')

PostgreSQL更改types时间戳没有时区 – >与时区

问题很简单:如果我已经有一个没有时区的列types时间戳的数据,如果我把types设置为带有时区的时间戳,那么postgresql会用这个数据做什么?

django.db.utils.ProgrammingError:关系已经存在

我试图build立一个新的Django项目的表(即表中不存在的数据库); django版本是1.7,而db后端是PostgreSQL。 该项目的名称是crud。 迁移尝试的结果如下: python manage.py makemigrations crud Migrations for 'crud': 0001_initial.py: – Create model AddressPoint – Create model CrudPermission – Create model CrudUser – Create model LDAPGroup – Create model LogEntry – Add field ldap_groups to cruduser – Alter unique_together for crudpermission (1 constraint(s)) python manage.py migrate crud Operations to perform: Apply all migrations: […]

了解postgres解释瓦特/位图堆/索引扫描

我有一张桌子,有四百五十万行。 没有主键。 该表有一个列p_id ,types为整数。 使用btree方法在此列上有一个索引idx_mytable_p_id 。 我做: SELECT * FROM mytable WHERE p_id = 123456; 我运行一个解释,看到下面的输出: Bitmap Heap Scan on mytable (cost=12.04..1632.35 rows=425 width=321) Recheck Cond: (p_id = 543094) -> Bitmap Index Scan on idx_mytable_p_id (cost=0.00..11.93 rows=425 width=0) Index Cond: (p_id = 543094) 问题: 为什么该查询执行堆扫描,然后进行位图索引扫描? 为什么检查425行? 为什么操作321的宽度? 12.04..1632.35和0.00..11.93告诉我的费用是多less? logging中有773行, p_id值为p_id上有38列。 谢谢!

PostgreSQL psqlterminal命令

我试图让psql格式很好,并在这里跟随文档。 现在,每当我对有很多列的表进行查询时,无论我的屏幕有多大,每行都会溢出到下一行,并产生整个屏幕上不可读的垃圾。 文档(链接在上面)说,有一种方法可以很好地alignment列以获得更多可读的输出。 通常,要启动psql ,只需键入: PSQL 并按Enter键 。 现在我试着: psql \ pset格式alignment 并得到一个错误: could not change directory to "/root" psql: warning: extra command-line argument "aligned" ingored psql: FATAL: Indent authentication failed for user "format" 任何想法,我怎么能得到这些命令行参数为我工作?

在SQL中创build临时表

我正在尝试创build一个临时表,只select某个register_type的数据。 我写了这个查询,但它不起作用: $ CREATE TABLE temp1 (Select egauge.dataid, egauge.register_type, egauge.timestamp_localtime, egauge.read_value_avg from rawdata.egauge where register_type like '%gen%' order by dataid, timestamp_localtime ) $ 我正在使用PostgreSQL。 你能告诉我什么是错误的查询?

postgresql列表和按大小sorting表

有没有简单的方法来列出PostgreSQL数据库中的所有表格,并按大小sorting? 伪代码 SELECT * FROM tables ORDER by tables.size 我正在使用PostgreSQL 9.3.2 。

在PostgreSQL中强制string的最大长度

我正在使用一个RoR应用程序的heroku,并试图手动设置string列的长度,并有麻烦。 我试图沿着一条线迁移 change_column :posts, :content, :string, :length => 10000 我以为这会工作,但没有这样的运气,任何人都有一些指针? 谢谢!

Postgres:你如何将时间戳上下移动到最接近的分钟?

有一个postgresql函数将返回一个时间戳四舍五入到最接近的分钟? input值是一个时间戳,返回值应该是一个时间戳。