问题标签 [postgresql-9.2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
194 浏览

ruby - 如何在 Ruby 中使用 Where 子句 (PostgreSQL) 中的变量编写查询

这就是我希望在不使用 gem 的情况下实现的目标。我在我的一个视图中有一个搜索功能,我希望允许人们在单个字段中输入名字和姓氏,让我的类方法搜索名字和姓氏并生成一个列表。我目前有以下丑陋的代码,它将在两个字段上进行全文搜索。怜悯我 :) 我是 SQL 和 PostgreSQL 的新手。我只做了基本的查询。

此代码适用于它在两个字段中搜索整个单词并生成所有匹配的记录。但是,我想做的是能够搜索以在搜索框中输入的值开头的列。例如,如果有人输入“Pat”,则查询将选择 Pat、Patrick、Patrice、Patricia 等。我确信有更好的方法来编写我包含的代码,我可以在其中列出我想要的所有值检查 first_name 和 last_name (或者至少我希望有)。

我今天一直在做很多关于这个的网络搜索。我发现了很多关于这方面的各个方面的信息。我看到了如何使用变量创建正则表达式。这对我来说很明显。我的问题是弄清楚如何将这些信息传递到我的 where 子句中。例如,我为所有四个字段尝试了以下代码。

然后我做了一个类似的 where 子句,我检查了 first_name 和 last_name 的所有四个值。我的查询没有返回任何行。

我还看到了有关检查子字符串与数组进行比较的解决方案。我在该解决方案中看到的问题是,您必须知道输入的值需要多长时间才能成功。这是一个带有示例的 Stack Overflow 帖子:

选择范围内的第一个字母(PostgreSQL)

我还观看了 RailsCasts #343 (Pro),其中讨论了 to_tsvector 和 plainto_tsquery,但坦率地说我迷路了。也许这是我的答案,但我可以肯定需要一些帮助。这对我来说就像泥巴一样清晰。

0 投票
1 回答
6993 浏览

sql - 一条语句中的“如果表存在则更新”-如何?

我对作为长事务的一部分的 SQL 语句有疑问。

UPDATE tab_1 LEFT JOIN tab_2 ON tab_1.id = tab_2.tab_1_id SET tab_1.something = 42 WHERE tab1.id = tab_2.tab_1_id;

只要数据库中存在 tab_1 和 tab_2 ,一切都很简单并且工作正常,这是显而易见的。;-)

问题是事务必须在 4 个不同的服务器上提交,并且 tab_2 是“动态”表,它可能存在于特定的 db / db 模式中,或者不......

如果 tab_2 不存在,数据库抛出异常并且整个事务没有提交。我想要的是继续(只需更新 0 行)!

我尝试过这样的事情:

UPDATE [all the same as above] WHERE tab1.id = tab_2.tab_1_id AND EXISTS (select 1 from pg_class where relname='tab_2');

...但它仍然是错误的,因为“异常检查”是在“where”条件之前进行的(它是我们要在 join 中使用的同一个表..)。

有没有办法用“纯” SQL 做到这一点?:)

类似于:LEFT JOIN tab_2 IF tab_2 EXISTS(如果不存在 - 什么也不做,返回 null 等?)

我知道在 pl/pgsql 过程中有一种方法可以做到这一点。第二种可能性是在语句之​​前创建表(如果不存在)。

但也许有某种简单而优雅的方法可以在一个语句中做到这一点?:)

数据库管理系统:PostgreSQL 9.2

0 投票
1 回答
1349 浏览

postgresql - 使用 PostGIS 获取基于位置的数据

我在 postgresql 9.2 中有一个表,它将位置的纬度和经度存储为整数值。

我打算做一些事情,比如当用户搜索某个位置时,他还会获取该搜索位置 7 英里半径范围内的其他位置的信息。

我如何使用 postGIS,因为我是新手。任何的想法。?

0 投票
3 回答
1049 浏览

sql - 用于显示与给定用户名匹配的相关用户名的查询

如果假设该人搜索用户名 - > johnny123 并且如果没有这样的用户名,那么我希望它返回一个与输入的用户名模式匹配的用户名列表,例如 johnny12345 、 johnnyboy 等。

0 投票
1 回答
1928 浏览

postgresql - 使 PostgreSQL 为新表空间创建目录

我希望能够做类似的事情

无需事先创建所有目录树。这是因为我有 java 代码可以动态创建表空间,我希望能够在单独的机器上运行它(所以它不能 mkdir() 或任何东西)。

是否有任何类型的 postgres 配置可以让我让 postgres 自己创建适当的目录树?

0 投票
3 回答
29970 浏览

postgresql - 使用 psql \copy 导入带有时间戳列 (dd.mm.yyyy hh.mm.ss) 的 .csv

psql \COPY我正在尝试使用命令(而不是 SQL COPY)将 .csv 文件中的数据导入 postgresql 9.2 数据库。

输入 .csv 文件包含一个带有 dd.mm.yyyy hh.mm.ss 格式的时间戳的列。

我已经将数据库日期样式设置为 DMY 使用。

不幸的是,当我运行\COPY命令时:

我收到此错误:

错误:日期/时间字段值超出范围:“16.11.2012 07:10:06”

提示:也许您需要不同的“日期样式”设置。

上下文:复制跟踪,第 2 行,列 timestamp_mes:“16.11.2012 07:10:06”

日期样式有什么问题?

0 投票
1 回答
2349 浏览

java - 在 Java 中存储 PostgreSQL/PostGIS“几何(多多边形)”数据类型

我需要将 PostgreSQL 的几何(MultiPolygon)类型变量存储到 java 变量中,这是因为我试图将几何列添加到非空间表中以使用 mapserver 查询地图

我试图将它存储在一个导致错误的字符串中。

请建议我使用 Java 中的数据类型,以便我可以将值存储在空间数据库的几何列中。

这是我的代码片段:

请建议一个 getXXX() 方法,以便我可以检索几何列值

提前致谢

从评论编辑:

0 投票
1 回答
287 浏览

ruby-on-rails-3.2 - 无法将现有 Rails 3.2.9 应用程序指向使用 postgres.app 创建的数据库

我目前有一个使用 PostgreSQL 数据库的 Rails 3.2.9 应用程序,当我将 Mac Mini 服务器升级到 Mountain Lion 时,这些数据库是使用 PgAdmin 重新创建的。数据库创建为我不知道的 9.2.1 版本。我想我使用的 PgAdmin 版本使用该版本号创建了它们。我只有升级到 Mountain Lion 的 Postgres 版本 9.1.4。我提交了另一个关于如何让 psql 的版本与我的数据库文件的版本相匹配的问题,因为这导致了实现 queue_classic 以运行后台作业的问题。在这一点上,我还没有收到任何回复。我继续查看并了解了 postgres.app。当前版本正在运行 PostgreSQL 9.2.2。

我已将当前数据库中的数据复制到 CSV 文件中。我还在 postgres.app 中使用了 psql 终端,并创建了我想在我的 Rails 应用程序中使用的新数据库。我决定更改 config/database.yml 中开发和测试数据库的定义,以确保在彻底测试之前不会弄乱生产数据库。为了确保我知道不同的数据库,我创建了不同名称的数据库,以确保我能够确定我的 Rails 应用程序指向使用 postgres.app 创建的数据库。

如 postgres.app 网站所述,我更改了 ,bashrc 中的路径。当我执行 which psql 时,它正确指向 postgres.app 版本 9.2.2。根据 postgres.app 网站所说的,我将 config/database/yml for development 更改为以下内容。

当我像往常一样使用 localhost:3000 运行我的 Rails 应用程序时,应用程序指向原始数据库。我期待一个错误,因为我没有执行 rake db:migrate 来重建新数据库中的所有表。

不知何故,我需要能够让我的 PostgreSQL 数据库版本与 PostgreSQL 的版本相匹配,但我不知道从这里去哪里。我会继续寻找。

任何帮助,将不胜感激。

更新 2012 年 12 月 31 日上午 5:50 CST GMT-6

我尝试了下面的命令。这是我之前尝试过的一个。我得到了命令下列出的错误(用户名被屏蔽)。

我创建了角色“用户名”并再次尝试了该命令。我收到以下错误。

我决定尝试下面的命令。我得到了命令下列出的错误。

数据库_postgres 不存在;数据库 postgres 可以。

0 投票
2 回答
2369 浏览

heroku - 在 Heroku 上升级到 postgres

以最少的停机时间将 Heroku Postgres 生产数据库升级到 9.2 的推荐方法是什么?是否可以使用追随者,或者我们应该采取 pgbackups/snapshots 路线?

0 投票
1 回答
1414 浏览

postgresql - Postgresql 查找跨 n 个数组的交集

可能重复:
PostGreSQL 中多个数组的交集

我正在尝试识别 Pg 9.2 数据库中多个 (>2) 数组中的公共元素。数据结构如下:

ID 标题数组
1 title1 {a,b,c,d,...}
2 title2 {z,y,a,d,...}
3 title3 {d,a,p,q,...}
n 。 …………

从上面的示例中,SELECT 应该返回 {a,d} 作为每个数组的公共元素。

我已经将这用于 2 个数组作为测试用例,使用:

...
select array_agg(e)
from (
select unnest(arr1) from cte_1
intersect
select unnest(arr2) from cte_2
) as dt(e)),
...

但是无法使其与 RECURSIVE CTE 一起正常工作。在网上和各种 Joe Celko 书籍/片段中找到了一些有用的示例。

我能想到的最好的就是这篇使用自定义函数的帖子:

PostgreSQL中多个数组的交集

但似乎应该有一种方法可以通过 RECURSIVE 或其他技术来实现这一点。

有任何想法吗?

提前致谢。