我正在使用 postgresql 数据库运行 ruby 和 rails 应用程序,我想从文本文件批量导入到数据库。
我已经配置了数据库,如果我运行psql并\l列出所有数据库,我可以看到它。
但是,在我运行后rake db:migrate,在数据库中没有创建任何关系并运行psql\d以检查表,显示“未找到关系”。但是模式已创建,我可以在 Induction PostgreSQL 客户端 ( http://inductionapp.com ) 中看到表
我正在尝试编写一个plpgsql函数,该函数从树结构中的记录递归返回一组列。
我有一个数据表和一个将数据链接在一起的表:
DATATABLE
-----------
id integer
value text
info text
LINKTABLE
-----------
link integer
parent integer
Run Code Online (Sandbox Code Playgroud)
我的想法是在以下功能中做类似的事情:
CREATE OR REPLACE FUNCTION my_function(itemID integer)
RETURNS TABLE(id integer, value text) AS
$BODY$
BEGIN
RETURN QUERY SELECT my_function(A.link) FROM linktable A, datatable B
WHERE A.parent = B.id AND B.id = itemID) C;
RETURN QUERY SELECT id, value FROM datatable WHERE id = itemID;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我在第一个查询中遇到错误:
错误:查询结构与函数结果类型不匹配
我的Just-In-Brain编译器没有检测到任何问题,那么我在这里做错了什么?
我是 PostgreSQL 的新手,正在配置一个新数据库。
我写了几个间接访问(读/写)数据的函数,我想禁止所有对表的直接访问。
GRANT CONNECT ON DATABASE db1 TO role1;
GRANT USAGE ON SCHEMA schema1 TO role1;
REVOKE ALL ON table1 FROM role1;
GRANT ALL ON ALL FUNCTIONS IN SCHEMA schema1 TO role1;
Run Code Online (Sandbox Code Playgroud)
如果我不 REVOKE 表权限,将允许直接表访问。如果我 REVOKE 表特权和 GRANT 函数,用户访问这些函数但看到表访问限制错误。
psql:./test1.psql:6: ERROR: permission denied for relation table1
Run Code Online (Sandbox Code Playgroud)
如何让用户role1只能使用函数访问数据,同时禁止对表的所有直接访问?我想我错过了一些东西,但我无法弄清楚。
PS 我使用的是 Postgres 9.2.x。
我开始使用 PostgreSQL,直到现在我只遇到了它的问题(pgAdmin3 问题最多),现在我经常使用 MySQL,有时只是在命令行上做
mysql -u ... -h localhost -p 例如,我通过命令行连接。
是否还有一种方法可以在没有 pgAdmin 的情况下连接到 PostgreSQL 数据库并通过命令行(终端)运行它(我正在使用 OS X Mountain Lion)。
ps 我也不是让 PostgreSQL 创建用户的忠实粉丝。当我启动 Mac 并在登录屏幕中以用户身份看到 PostgreSQL 时,这让我很恼火。有没有可能避免这种情况?
我听说 Postgresql 对其数据库使用仅附加格式,如果这是真的,我应该能够通过删除它之后的提交来将数据库“倒带”到先前的时间点。
有谁知道我怎么能做到这一点?
谢谢
我有一个 db,它有 223 个表,我必须从其中的 10 个表中删除一些记录,每个记录都有 apprx。150 万条记录。这些表每 7 秒存储一次温度。我们决定删除所有记录,但每分钟删除第一条记录。所以现在每分钟有 8 条记录,在此过程之后,它将每分钟存储 1 条超过 3 个月的记录。
我应该通过删除并在之后完全真空还是通过截断来完成?还有一些与其中一些表相关的视图。如果我通过截断来完成,这些视图之后会起作用吗?
我是 PostgreSQL 的新手,想看看这是否可行。
有两个超级用户,'postgres'(PostgreSQL 的默认超级用户)和 'super2'。
超级用户“super2”创建了一个名为“Movies”的新数据库,并成为它的所有者。
是否可以限制超级用户“postgres”访问数据库“电影”,以便只有超级用户“super2”才能访问它,因为他是数据库的所有者。
如果可能,那么如何实现呢?
通过 MacPorts 安装 PostgreSQL 时(我也假设通过其他方式),postgres:postgres会创建一个用户/组。是否有任何原因需要此用户/组?
我们希望以编程方式检测 cron 调度的 pg_dumps 中的错误。
除了检查日志文件是否以“pg_dump:保存数据库定义”结尾:
为了以编程方式检查转储,我还可以grep 其他什么字符串。
我必须设计一个数据库,它最终会在单个表中包含 50M 条记录(还有其他表的记录数较少)。我更关心连接查询和将数据(插入)写入数据库。更新和删除查询会更少。
我已经阅读了这篇关于 Postgresql 与 MySQL 的性能比较的文章。
我也浏览了以下链接。
MySQL vs PostgreSQL:为什么 MySQL 优于 PostgreSQL
我的问题是 stackoverflow 上的一些链接已经过时了。有些人说Mysql更好,反之亦然。
因为我更关心连接查询和将数据写入数据库哪个更适合我?Postgresql 与 MySQL?我应该采取什么方法来设计这样的数据库?
鉴于请不要将此视为另一个 Postgresql vs MySQL 问题。我已经完成了我的研究,我只关心连接查询和将数据写入数据库场景。我还了解到 PostgreSQL 更适合 GIS 数据。.
postgresql ×10
command-line ×1
dump ×1
functions ×1
mac-os-x ×1
monitoring ×1
mysql ×1
performance ×1
permissions ×1
pg-dump ×1
plpgsql ×1
restore ×1
truncate ×1
vacuum ×1