在Postgresql中插入大型对象会返回53200内存不足的错误
PostgreSQL 9.1 NPGSQL 2.0.12 我有二进制数据,我想存储在PostgreSQL数据库中.但是,大多数文件加载正常,但是,一个大的二进制文件(664 MB)文件会引起问题.尝试通过NPGSQL大量对象支持将文件加载到PostgreSQL时,PostgreSQL Server返回" OUT MOMERY"错误. 我目前正在使用4GB RAM的工作站上运行此操作,而2GB则免费使用以闲置状态运行的PostgreSQL. 这是我正在使用的代码,改编自/a>. using (var transaction = connection.BeginTransaction()) { try { var manager = new NpgsqlTypes.LargeObjectManager(connection); var noid = manager.Create(NpgsqlTypes.LargeObje
24 2024-04-01
编程技术问答社区
用位数和运算符对位串列进行排除性约束
我读过有关排除约束 在PostgreSQL中,但似乎找不到一种在Bitsring上使用位算子的方法. 我有两个列(name text, value bit(8)).我想创建一个基本上说明的约束: ADD CONSTRAINT route_method_overlap EXCLUDE USING gist(name WITH =, value WITH &) 但这是不起作用的,因为: 操作员&(bit,bit)不是操作员家族的成员" gist_bit_ops" 我认为这是因为bit_ops操作员&不返回boolean.但是有没有办法做我想做的事?有没有办法胁迫operator &将其回报价值作为布尔值? 当前使用Postgres 9.1.4与已安装的" btree_gist"扩展名一起使用,全部来自Ubuntu 12.04存储库.但是版本没关系.如果上游有修复程序/更新,我可以从存储库中安装.我仍处于设计阶段. 解决方案 您安装了扩展名 btree
10 2024-03-31
编程技术问答社区
Postgres 9.x中CHECK约束的代价是什么?
我有一个带有60列的表.其中20个是" notempty"和6个" notnull". 我有空值和空值(在我的情况下总是表示"无数据").我想只用一种类型的约束来统一列. 我读取了空值便宜(字节尺寸).所以也许使用无用的约束?但是,也许没有限制的效果更好?也许最好在检索数据时具有值并使用coalesce()? 在Postgres 9.x中,CHECK约束的成本是多少?您的经历如何?任何基准? 解决方案 有些人试图避免NULL值,声称逻辑会令人困惑. 我不是其中之一. NULL值仅适用于没有数据的列.它们当然是存储"空"列的最便宜的方法 - 用于磁盘空间以及性能(主要效果是较小的桌子和索引): 在postgresql中不使用null仍在标题中使用空位图? 是否可以在postgresql中占用其他空间? 一旦您了解NULL值的性质,就没有理由避免它们. Postgres提供了各种功能来处理无效. nullif() /www.postgresq
10 2024-03-30
编程技术问答社区
为什么pg_restore返回 "选项-d/-dbname和-f/-file不能一起使用"?
以下Windows批处理脚本在数据库还原的行上失败: @Echo off set Path=C:\Program Files (x86) set Backup_Path=C:\Program Files (x86) c: cd \ cd C:\Program Files (x86)\PostgreSQL\9.1\bin @echo "Wait ..." setlocal set PGPASSWORD=1234 psql.exe -U postgres -c "create database Mydata" "C:\Program Files (x86)\PostgreSQL\9.1\bin\pg_restore.exe" -h localhost -U postgres -d Mydata -f "Mydata.backup" pause endlocal 错误是: pg_restore:-d/-dbname和-f/- 文件无法一起使用 尝
6 2024-03-29
编程技术问答社区
postgresql中的移动平均线
我的PostgreSQL 9.1数据库中的下表: select * from ro; date | shop_id | amount -----------+----------+-------- 2013-02-07 | 1001 | 3 2013-01-31 | 1001 | 2 2013-01-24 | 1001 | 1 2013-01-17 | 1001 | 5 2013-02-10 | 1001 | 10 2013-02-03 | 1001 | 4 2012-12-27 | 1001 | 6 2012-12-20 | 1001 | 8 2012-12-13 | 1001 | 4 2012-12-06 | 1001 | 3 2012-10-29 | 1001 | 3
14 2024-03-21
编程技术问答社区
postgresql的超级用户没有密码提示
在Ubuntu上安装了PostgreSQL 9.1后,我设置了" Postgres" Superuser帐户的密码.我希望所有用户都必须在滚动时输入他们的密码.这就是为什么我配置pg_hba.conf喜欢: #Database administrative login by Unix domain socket local all postgres md5 # TYPE DATABASE USER ADDRESS METHOD # "local" is for Unix domain socket connections only local all all md5 进行这些更改后,我重新启动了PostgreSQL.当
12 2024-03-19
编程技术问答社区
保留数组的所有元素,同时(左)连接到一个表
我试图从每月的12个月费用中从我的费用表中撤出. 如果一个月内没有结果,我仍然希望收到这个月的价值0(零)值结果. 我的数据库是postgresql 9.1. 我写了此查询,但是我不成功执行它或理解如何纠正它. SELECT fta.liability_id, fta.amount , date_part('month', fta.act_date) AS act_month FROM ( select i from generate_series(1,array_upper(ARRAY[1,2,3,4,5,6,7,8,9,10,11,12],1)) i) as ym LEFT OUTER JOIN financial_t_account fta on ym.i = fta.act_month; 解决方案 错误是您尝试在连接条件下参考输出列的名称(act_month),而它尚不可见 - 尚未计算!尝试: SELECT fta.liab
8 2024-03-07
编程技术问答社区
PostgreSQL 的整数数组值与其他表中的整数的连接,并带有描述字符串
i有一个表test列,上面有int数组和值,例如{1000,4000,6000}或{1000}或{1000,4000}称为ekw. 这些值匹配另一个表中的描述字符串 tab: test id | name | ekw ----------------- 1 | One | {1000} 2 | Two | {1000,4000} 3 | Three | {1000,4000,6000} tab: ekwdesc id | value | desc ----------------- 1 | 1000 | Max 2 | 2000 | Tim 3 | 3000 | Rita 5 | 4000 | Sven 6 | 5000 | Tom 7 | 6000 | Bob 是否可以选择这些列并打印字符串? 类似: select name, ekw from test, ekwdesc 我想看看这个结果:
8 2024-03-05
编程技术问答社区
在group by子句中连接数组
我们将问题分组为单个数组. 我们想将两个列的值加入一个单个数组,并汇总多行的这些数组. 给定以下输入: | id | name | col_1 | col_2 | | 1 | a | 1 | 2 | | 2 | a | 3 | 4 | | 4 | b | 7 | 8 | | 3 | b | 5 | 6 | 我们想要以下输出: | a | { 1, 2, 3, 4 } | | b | { 5, 6, 7, 8 } | 元素的顺序很重要,应与聚合行的ID相关. 我们尝试了array_agg()函数: SELECT array_agg(ARRAY[col_1, col_2]) FROM mytable GROUP BY name; 不幸的是,此语句提出了一个错误: ERROR: could not find array type for data ty
4 2024-03-05
编程技术问答社区
大整数阵列函数
是否有与大整数一起工作的可用功能? 我找到了一个模块我错过了从数组中删除项目的功能.类似于上述模块中"减"操作员的实现: int[] - int(从数组中删除匹配正确参数的条目 ) 解决方案 Postgres 9.3或新的 添加test=> SELECT array_remove('{1,3,4,3}'::bigint[], 3); array_remove -------------- {1,4} Postgres 9.2或以上 创建一个自定义功能.这是相当快的: CREATE OR REPLACE FUNCTION arr_subtract(int8[], int8[]) RETURNS int8[] LANGUAGE sql IMMUTABLE AS $func$ SELECT ARRAY( SELECT a FROM unnest($1) WITH ORDINALITY x(a, ord) WHERE a
0 2024-03-04
编程技术问答社区
检查Postgres数组中是否存在NULL
类似于这个问题,我如何找到是否存在数组中的null值? 这是一些尝试. SELECT num, ar, expected, ar @> ARRAY[NULL]::int[] AS test1, NULL = ANY (ar) AS test2, array_to_string(ar, ', ') array_to_string(ar, ', ', '(null)') AS test3 FROM ( SELECT 1 AS num, '{1,2,NULL}'::int[] AS ar, true AS expected UNION SELECT 2, '{1,2,3}'::int[], false ) td ORDER BY num; num | ar | expected | test1 | test2 | test3 -----+------------+----------+-------+-------+-------
8 2024-03-04
编程技术问答社区
如何在Ubuntu 12.04上启动postgresql服务器
我刚刚在Ubuntu 12.04服务器上安装了PostgreSQL 9.1(由Amazon EWS托管).当我尝试启动 psql 命令时,显示以下错误消息. psql:无法连接到服务器:没有这样的文件或目录是 服务器在本地运行并接受Unix域上的连接 套接字"/var/run/postgresql/.s.pgsql.5432"? 在网络上搜索后,我发现我必须在使用服务器之前启动服务器.通过跟随此 initdb 链接,我仍然无法使用PostgreSQL数据库.我应该做进一步的工作(例如配置)来启动服务器吗? 我尝试启动服务:服务PostgreSQL Start 另一个错误消息显示: 不存在postgresql群集;请参阅"男人pg_createcluster" 解决方案 我收到了此消息,在Ubuntu 11.04上运行了新安装的Postgres 9.3.完整的消息是: $ sudo /etc/init.d/postgresql start Error:
12 2024-01-26
编程技术问答社区
连接到亚马逊ec2上的远程postgresql服务器
我启动了一个Amazon EC2实例,并在其上安装了PostgreSQL 9.1.然后我去了 安全组:QuickLaunch-1 (there was one more默认值我没有更改)并打开了5432 TCP端口,该表看起来像这样: (Service) Source Action 22 0.0.0.0/0 Delete 5432 0.0.0.0/32 Delete 5433 0.0.0.0/32 Delete 6432 0.0.0.0/32 Delete 我创建了一个数据库和用户. 我的/etc/postgresql/9.1/main/pg_hba.conf看起来像这样: # Database administrative login by Unix domain socket local all postgres
12 2024-01-25
编程技术问答社区
如何在postgresql中禁用外键约束
我正在使用AWS Aurora Postgres,并使用DMS从RDS Postgres迁移到Aurora PG.为了执行完整的负载,我想在所有对象上禁用外键约束和触发.我可以禁用触发器,但找不到禁用约束的方法. 以下不起作用: ALTER TABLE so_items DISABLE CONSTRAINT so_items_so_id_fkey; 它投掷: 错误:"约束"或附近的语法错误 第1行:Alter Table SO_Items禁用约束SO_ITEMS_SO_ID_FKEY; ^ SQL状态:42601 角色:30 设置参数组中的" session_replication_role" =" replica"不起作用.当DMS任务试图截断准备工作的一部分时,它仍然会因外国密钥违规错误而失败. 请告知任何解决方法. 注意:我无法在下面做,因为在RDS中,即使使用Master帐户,我也没有权限: alter table so_items
46 2024-01-24
编程技术问答社区
Drop column doesn't remove column references entirely-postgresql
我有一个包含1600列的表,并希望在其中添加更多字段,但是根据数据库规则,由于达到较高的限制,因此不允许创建更多字段. 所以我决定从桌子上放下一些不需要的田地,然后做.再次,我尝试在该表中添加几个字段,但这引起了相同的错误,即1600列在那里您无法添加更多. 我浏览了postgresql的其他表" pg_attribute ",所有这些字段都在那里,并且删除参数= true. 我到目前为止尝试过的 下降约束将表数据带入另一个表截断表 重新创建约束将重复数据重新编码到主表. 但是,pg_attributes表中仍然存在掉落的列. 我还试图从 pg_attribute 中删除该记录,但 给我这样的错误. ERROR: catalog is missing 1 attribute(s) for relid 208996 ********** Error ********** ERROR: catalog is missing 1 attribut
28 2024-01-24
编程技术问答社区
如何按A,B和B返回n行B分组
使用Postgres 9.3.2,我想获得由req_time和customer_id分组的req_status的计数,并返回一组 n 行,即使在req_status计数为零. req_time req_id customer_id req_status ----------------------------------------------- 2014-03-19 100 1 'FAILED' 2014-03-19 102 1 'FAILED' 2014-03-19 105 1 'OK' 2014-03-19 106 2 'FAILED' 2014-03-20 107 1 'OK' 2014-03-20 108 2
10 2024-01-19
编程技术问答社区
postgresql中的乘法(num)聚合函数
文档就在其中很简单.是否有一种方法可以通过PostgreSQL中的乘法运算符聚合列.我知道我可以进行计数(列)或总和(列),但是我可以使用多个(列)或产品(列)函数.如果没有,任何想法如何实现. 我正在使用Postgres 9.1 问候, 哈桑 解决方案 当然,只需在基本乘法函数上定义聚合.例如.对于bigint: CREATE AGGREGATE mul(bigint) ( SFUNC = int8mul, STYPE=bigint ); 示例: regress=> SELECT mul(x) FROM generate_series(1,5) x; mul ----- 120 (1 row) 参见 CREATE AGGREGATE 其他解决方案 这是一个适用于所有数值数据类型的版本: CREATE FUNCTION mul_sfunc(anyelement, anyelement) RETURNS anyelement
44 2024-01-19
编程技术问答社区
在SELECT中创建数组
我正在使用PostgreSQL 9.1,并且有此数据结构: A B ------- 1 a 1 a 1 b 1 c 1 c 1 c 1 d 2 e 2 e 我需要一个产生此结果的查询: 1 4 {{c,3},{a,2},{b,1},{d,1}} 2 1 {{e,2}} a = 1,4行总数为a = 1,部分计数(3行C值,2行带有值,.....) 列" A" 的独特值 与" A"值相关的所有行的计数 一个数组包含与" a"值相关的所有元素和自身的相对数量 数组所需的排序基于每个组的计数(例如示例3,2,1,1). 解决方案 这应该可以解决: SELECT a , sum(ab_ct)::int AS ct_total , count(*)::int AS ct_distinct_b , array_
6 2024-01-19
编程技术问答社区
PostreSQL中的聚合存储列
我有这样的桌子: Table "public.statistics" id | integer | not null default nextval('statistics_id_seq'::regclass) goals | hstore | 项目: |id |goals | |30059 |"3"=>"123" | |27333 |"3"=>"200", "5"=>"10" | 我需要做什么来通过哈希中的键进行汇总? 我想得到这样的结果: select sum(goals) from statistics 返回 |goals | |"3"=>"323", "5"=>"10" | 解决方案 在Laure
12 2024-01-19
编程技术问答社区