小编Jos*_*rry的帖子

PostgreSQL - 获取具有列的Max值的行

我正在处理Postgres表(称为"生命"),其中包含time_stamp,usr_id,transaction_id和lives_remaining列的记录.我需要一个查询,它将为每个usr_id提供最新的lives_remaining总数

  1. 有多个用户(不同的usr_id)
  2. time_stamp不是唯一标识符:有时用户事件(表中逐行)将以相同的time_stamp发生.
  3. trans_id仅在非常小的时间范围内是唯一的:随着时间的推移它会重复
  4. remaining_lives(对于给定用户)可以随时间增加或减少

例:

time_stamp|lives_remaining|usr_id|trans_id
-----------------------------------------
  07:00  |       1       |   1  |   1    
  09:00  |       4       |   2  |   2    
  10:00  |       2       |   3  |   3    
  10:00  |       1       |   2  |   4    
  11:00  |       4       |   1  |   5    
  11:00  |       3       |   1  |   6    
  13:00  |       3       |   3  |   1    

因为我需要使用每个给定的usr_id的最新数据来访问该行的其他列,所以我需要一个给出如下结果的查询:

time_stamp|lives_remaining|usr_id|trans_id
-----------------------------------------
  11:00  |       3       |   1  |   6    
  10:00  |       1       |   2  |   4    
  13:00  |       3       |   3  | …

sql postgresql query-optimization cbo cost-based-optimizer

87
推荐指数
6
解决办法
9万
查看次数

将UUID作为PostgreSQL中的主键会给出糟糕的索引性能吗?

我使用PostgreSQL数据库在Heroku上的Rails中创建了一个应用程序.

它有几个表,可以与移动设备同步,可以在不同的地方创建数据.因此,我有一个uuid字段,除了自动增量主键之外,还是一个存储GUID的字符串.uuid是服务器和客户端之间通信的那个.

我意识到在服务器端实现同步引擎后,当需要在uuid < - > id之间进行映射时,这会导致性能问题(在编写对象时,我需要在保存之前查询uuid以获取id)发送回数据时相反).

我现在正在考虑切换到仅使用UUID作为主键,使写入和读取更加简单和快速.

我已经读过UUID作为主键有时会在使用聚簇主键索引时产生错误的索引性能(索引碎片).PostgreSQL是否遇到此问题或者使用UUID作为主键是否可以?

我今天已经有了一个UUID列,因此存储方式会更好,因为我删除了常规id列.

ruby postgresql ruby-on-rails heroku

59
推荐指数
1
解决办法
2万
查看次数

在数据库中搜索"某处"字符串

这是我的问题:我第一次看某人的基于Postgresql的数据库应用程序,并试图找到导致系统日志文件中出现某些警告/错误的原因.我对数据库架构一无所知.我对源代码一无所知.但我需要追查问题.

我可以使用UNIX命令'grep'轻松搜索基于文本文件的字符串内容,如php和perl.即使对于已编译的二进制文件,我也可以使用UNIX命令"find"和"strings".

我的问题是日志文件中产生的一些文本来自数据库本身.检查数据库的错误日志文件没有任何用处,因为应用程序使用的查询没有问题.

我想要做的是详尽地搜索数据库的所有列和所有表中的字符串.这有可能,怎么样?

提前感谢任何指针.使用的环境是Postgresql 8.2,但知道如何在其他类型的关系数据库中执行此操作也很有用.

database string postgresql search

6
推荐指数
1
解决办法
5186
查看次数

如何使Beyond Compare比较按名称匹配列的数据文件,而不是按顺序

我有两种情况:

  1. 两个具有相同列数的csv文件,但列顺序不同.csv的第一行是标题行,并正确指示列名称
  2. 两个csv文件具有一些不同的列,但实际上大多数列都存在于两个文件中.同样,csv标题行指示可以比较的列名称

在上述两种情况下,BC3都无法自动匹配/更改列顺序.这可以通过Session Settings菜单手动完成,但相当耗时.

以上#2的例子

请注意,在以下屏幕截图中,左侧文件有一个名为priority右侧文件的列.

之前(默认情况下列与订单匹配):

请注意,在下图中,左侧文件的第5列priority与右侧文件的第5列进行比较companyjob.以下所有列比较同样不匹配.

之前

之后(使用名称手动匹配的列):

后

有没有一种简单方法可以轻松/自动配置此比较,因为我在第二张图片中手动完成了这项操作?

csv comparison beyondcompare beyondcompare3

6
推荐指数
1
解决办法
9326
查看次数

您通过ODBC使用哪些应用程序进行数据输入和检索?

您使用哪些应用程序或工具将数据输入数据库?我正在努力改进我们现有的(繁琐的)系统,该系统使用基于php web的系统来输入数据......项目......在......时间.

我目前的解决方案是使用电子表格.它适用于人类可读的文本和数字,但不适用于与其他表的行连接的外键.

想象一下,我想要一行数据来包含某人居住的城市.持有此列的列是id_city,它键入"city"表,其中包含两列:id(序列)和name(文本).

我设想能够扩展电子表格功能,以包括id_city列的每一行的下拉菜单,允许用户选择哪个城市(显示城市名称的文本),但实际存储所选的城市ID.这样,电子表格将:
(1)在每个屏幕上显示大量数据,
(2)可以作为csv文件导出并抛出到我们现有的脚本中,这些脚本手动将行插入数据库.

我一直在玩MS Excel和Access,以及OpenOffice的套件,但是没有找到能够提供我上面提到的功能的东西.

我的愿望清单上的其他项目:
(1)动态获取用户可以选择的城市名称.
(2)允许用户将数据直接推送到后端(而不是通过外部文件/脚本.
(3)如果在后端更改了数据行的任何列,则用户可以刷新屏幕上的数据反映最近的任何变化.

你知道如何改进数据输入过程吗?你用什么工具?我使用PostgreSQL作为后端,可以访问MS Office,OpenOffice以及基于Web的解决方案.我希望一个灵活,强大且不需要太多时间来开发或部署的解决方案(我知道,梦想......)

我知道pgAdmin3具有类似的功能,但从我所看到的,它更像是一个管理工具而不是用户使用的东西.

forms postgresql odbc data-entry

5
推荐指数
1
解决办法
1576
查看次数

如何重定向到标准输出?

我有一个用ansi C编写的UNIX应用程序,它直接将数据写入文件.此文件由其中一个参数参数指定.

出于测试目的,我可以使用/ dev/null作为文件名,这有效地将输出重定向为空.

我希望能够通过类似的方法将输出重定向到stdout.这可能吗?如果是这样,怎么样?我试过以下没有运气:

a.out -f/dev/ttys000

(其中/ dev/ttys000是'w'列表指定的tty)

unix redirect stdout

4
推荐指数
1
解决办法
2528
查看次数