Questions tagged «postgresql»

PostgreSQL的所有版本。如果该上下文很重要,请添加其他特定于版本的标记,例如postgresql-11。

1
postgres-没有角色的pg_dump和pg_restore
我正在尝试在不具有接收数据库上适当角色的情况下还原转储。 如前所述这里也是在这里,你需要有--no-owner作为一个选项,无论是在pg_dump或pg_restore或两者 我使用以下命令行创建我的转储 "C:\Program Files\PostgreSQL\9.3\bin\pg_dump.exe" --no-owner -Ft --dbname=postgresql://avo******:AV0******?@127.0.0.1:5432/BI_DB > K:\BI\backup\sort\bck_%timestamp%.tar 恢复线如下 "C:\Program Files\PostgreSQL\9.3\bin\pg_restore.exe" --host localhost --port 5432 --username "postgres" --dbname "BI_TEST2" --no-password --no-owner --role=postgres --exit-on-error --verbose "D:\D\avo\backup\bck_04042017_1410.tar" 如您所见,两者都有--no-owner选择,但最终,我在下面出现了错误 令我感到困扰的是下面的日志 pg_restore: [programme d'archivage (db)] Erreur pendant le traitement de la TOC (« PROCESSING TOC ») : pg_restore: [programme d'archivage (db)] Erreur …

3
查找链接到PostgreSQL角色的对象
有时,我创建了一个名为user1(PostgreSQL 9.4.9)的PostgreSQL用户。 我要删除此用户。因此,我也首先撤销了对表,序列,函数,默认特权和所有权的所有权限: ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1; ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1; ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1; REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1; REVOKE …

3
PostgreSQL过程语言开销(plpython / plsql / pllua…)
我正在尝试以过程语言性能来查找有关PostgreSQL 用户定义函数的信息,以执行实时任务。 它们与内置函数相比如何? (在开销方面)Postgres如何调用/管理plpython vs plpgsql vs pllua函数(我对Postgres集成/上下文/数据传输方面感兴趣,而不对VM本身感兴趣)有什么区别吗? 上下文是否有很大的开销?我可以使用它进行实时数据映射吗(假设每秒1000个查询) 用plpgsql和其他pg /语言编写用户定义的函数有什么好处?在文档中,它们列举了优点,但是我认为它们适用于所有postgresql过程语言。 相关发现: 非典型用法的PL语言的速度 PostgreSQL函数语言性能:C与PL / PGSQL

2
关系<table>的权限被拒绝
我在psql中运行了以下SQL: CREATE USER bspu LOGIN; CREATE DATABASE bsp OWNER bspu; GRANT ALL PRIVILEGES ON DATABASE bsp TO bspu; \c bsp CREATE TABLE users ( id SERIAL PRIMARY KEY, client_id VARCHAR(20) NOT NULL, api_key VARCHAR(100) NOT NULL, api_secret VARCHAR(100) NOT NULL, auth_token VARCHAR(128) NOT NULL ); 当我以身份登录bspu并尝试查询users表时,出现错误: permission denied for relation …

2
Postgres JOIN条件与WHERE条件
Postgres新手在这里。 我想知道此查询是否已优化?我尝试仅加入100%必需的值,并将所有动态条件保留在WHERE子句中。见下文。 SELECT * FROM myapp_employees JOIN myapp_users ON myapp_users.user_id=myapp_employees.user_id JOIN myapp_contacts_assoc ON myapp_contacts_assoc.user_id=myapp_users.user_id JOIN myapp_contacts ON myapp_contacts.contact_id=myapp_contacts_assoc.contact_id WHERE myapp_contacts.value='test@gmail.com' AND myapp_contacts.type=(1)::INT2 AND myapp_contacts.is_primary=(1)::INT2 AND myapp_contacts.expired_at IS NULL AND myapp_employees.status=(1)::INT2 AND myapp_users.status=(1)::INT2 LIMIT 1; 注意:对于上下文,此proc正在检查用户是否也是雇员(特权/不同用户类型)。 无论如何,这是正确的方法吗?例如,JOIN ON是否应该包含更多的语句,例如检查是否为expired_at IS NULL?为什么或为什么这没有道理?

2
psql:严重:用户的对等身份验证失败
我刚刚在Ubuntu 15.10上安装了PostgreSQL 9.4。 我创建了一个用户 createuser -P myuser 我创建了一个数据库 createdb -O myuser mydatabase 我编辑pg_hba.conf并添加了local mydatabase myuser md5 我用重新启动了PostgreSQL sudo service postgresql restart 用户myuser仅是PostgresSQL用户,在Ubuntu上没有用户帐户。 当我尝试使用连接数据库psql -W mydatabase myuser时失败psql: FATAL: Peer authentication failed for user "myuser"。 PostgreSQL正在运行… ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since …

2
多列vs少表-性能明智
是的,我知道数据规范化应该是我的首要任务。 我有一个表,65列存储与列车辆数据:used_vehicle,color,doors,mileage,price等等,总共65。 现在,我可以除以和有一个Vehicle表,VehicleInterior,VehicleExterior,VehicleTechnical,VehicleExtra(全一到一个与主Vehicle表)。 假设我有大约500万行(车辆)。 在SELECT带有WHERE子句的情况下:搜索效果会更好(两种情况至少都在上索引IDs): Vehicle 65列的表格或 Vehicle表与JOINS其他四个表(均具有500万行)一起返回与Vehicle?相关的所有数据 (根据数据库引擎,考虑PostgreSQL和/或MySQL)。 真的很欣赏您以前的经验中得到的任何详细见解吗?

2
PostgreSQL-插入/更新违反外键约束
我是postgreSQL的新手。我有3个表,一个表引用了其他2个表的主键。但是我无法将数据插入Table3。参见下面的代码: DROP TABLE Table1 CASCADE; CREATE TABLE Table1( "DataID" bigint NOT NULL DEFAULT '0', "AdData" integer DEFAULT NULL, PRIMARY KEY ("DataID") ); DROP TABLE IF EXISTS Table2 CASCADE; CREATE TABLE Table2 ( "Address" numeric(20) NOT NULL DEFAULT '0', "Value" numeric(20) DEFAULT NULL, PRIMARY KEY ("Address") ); DROP TABLE IF EXISTS …

2
SELECT和WHERE子句中的功能相同
初学者问题: f(x, y)我的数据库表中的x和y两列都有一个昂贵的函数。 我想执行一个查询,该查询将函数的结果作为列提供给我,并对其施加约束,例如 SELECT *, f(x, y) AS func FROM table_name WHERE func &lt; 10; 但是,这不起作用,所以我将不得不写一些类似的东西 SELECT *, f(x, y) AS func FROM table_name WHERE f(x, y) &lt; 10; 这会运行两次昂贵的功能吗?最好的方法是什么?

1
分区约束不适用于涉及按时间戳进行分区的表的联接
我有一个分区表结构,如: CREATE TABLE measurements ( sensor_id bigint, tx timestamp, measurement int ); CREATE TABLE measurements_201201( CHECK (tx &gt;= '2012-01-01 00:00:00'::timestamp without time zone AND tx &lt; ('2012-01-01 00:00:00'::timestamp without time zone + '1 mon'::interval)) )INHERITS (measurements); CREATE INDEX ON measurements_201201(sensor_id); CREATE INDEX ON measurements_201201(tx); CREATE INDEX ON measurements_201201(sensor_id, tx); .... …

1
SQL规范是否要求EXISTS()中的GROUP BY
Microsoft当前允许使用此语法。 SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS ( SELECT * FROM ( VALUES (1),(1) ) AS t(x) WHERE g.x = t.x HAVING count(*) &gt; 1 ); 请注意,GROUP BY该EXISTS子句中没有有效的ANSI SQL。还是仅公开实现细节。 作为参考,PostgreSQL不允许使用相同的语法。 错误:“ tx”列必须出现在GROUP BY子句中或在聚合函数中使用 但是允许使用此语法。 SELECT * FROM ( VALUES (1) ) AS g(x) WHERE EXISTS …

10
如何在标准SQL或T-SQL中生成1、2、3、3、2、1、1、2、3、3、2、1…系列?
给定两个数字n和m,我想生成一系列的表格 1, 2, ..., (n-1), n, n, (n-1), ... 2, 1 并重复m一次。 例如,对于n = 3和m = 4,我需要以下24个数字组成的序列: 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1, 1, 2, 3, 3, 2, 1 ---------------- ---------------- ---------------- ---------------- 我知道如何通过两种方法之一在PostgreSQL中实现此结果: 使用以下查询,该查询使用该generate_series函数,以及一些技巧以确保顺序正确: WITH parameters (n, …

2
PostgreSQL:将表作为函数中的参数传递
我TYPE在PostgreSQL中发现。我有TABLE TYPE一些表必须尊重(接口)。例如: CREATE TYPE dataset AS( ChannelId INTEGER ,GranulityIdIn INTEGER ,GranulityId INTEGER ,TimeValue TIMESTAMP ,FloatValue FLOAT ,Status BIGINT ,QualityCodeId INTEGER ,DataArray FLOAT[] ,DataCount BIGINT ,Performance FLOAT ,StepCount INTEGER ,TableRegClass regclass ,Tags TEXT[] ,WeightedMean FLOAT ,MeanData FLOAT ,StdData FLOAT ,MinData FLOAT ,MaxData FLOAT ,MedianData FLOAT ,Percentiles FLOAT[] ); 我可以使用以下模板创建表格: CREATE TABLE …


1
使用类型修饰符的数据类型的结果令人惊讶
在讨论此问题的递归CTE解决方案时: 获取每个ID的最后5个不同的值 @ypercube偶然发现了一个令人惊讶的异常,这使我们研究了类型修饰符的处理。我们发现了令人惊讶的行为。 1.类型转换在某些情况下保留类型修饰符 即使指示不要这样做。最基本的例子: SELECT 'vc8'::varchar(8)::varchar varchar至少我会期望(没有修饰符)。但是结果是varchar(8)(带有修饰符)。在下面的小提琴中有许多相关案例。 2.数组串联在某些情况下会丢失类型修饰符 不需要,因此在另一侧犯了错误: SELECT ARRAY['vc8']::varchar(8)[] , ARRAY['vc8']::varchar(8)[] || 'vc8'::varchar(8) 第一个表达式产生varchar(8)[]预期的效果。 但是第二个,在连接另一个之后,varchar(8)会减少到varchar[](无修饰符)。array_append()以下小提琴中的示例提供类似的行为。 在大多数情况下,所有这些都无关紧要。Postgres不会丢失数据,并且当分配给列时,无论如何该值都被强制为正确的类型。但是,在相反方向上的错误最终导致一个令人惊讶的异常: 3.递归CTE要求数据类型完全匹配 给出此简化表: CREATE TABLE a ( vc8 varchar(8) -- with modifier , vc varchar -- without ); INSERT INTO a VALUES ('a', 'a'), ('bb', 'bb'); 尽管此rCTE适用于该varchar列vc,但不适用于该varchar(8)列vc8: WITH RECURSIVE cte AS ( …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.