Tag: postgresql

Postgres – 如何检查一个空的数组

我正在使用Postgres,我试图写一个像这样的查询: select count(*) from table where datasets = ARRAY[] 即我想知道有多less行有一个特定列的空数组,但postgres不喜欢: select count(*) from super_eds where datasets = ARRAY[]; ERROR: syntax error at or near "]" LINE 1: select count(*) from super_eds where datasets = ARRAY[]; ^

如何从CSV文件复制到CSV文件中的标题的PostgreSQL表?

我想复制CSV文件到Postgres表。 这张桌子里有大约100列,所以我不想重写,如果我不需要。 我正在使用\copy table from 'table.csv' delimiter ',' csv; 命令但没有创build表我得到ERROR: relation "table" does not exist 。 如果我添加一个空白表,我没有得到任何错误,但没有任何反应。 我尝试了这个命令两三次,没有输出或消息,但是当我通过PGAdmin检查它时表没有被更新。 有没有一种方法来导入一个表头像我想要做的?

在postgreSQL中创build表

我不明白这个查询有什么问题? 查询工具不希望在PostgreSQL中创build表。 CREATE TABLE article ( article_id bigint(20) NOT NULL auto_increment, article_name varchar(20) NOT NULL, article_desc text NOT NULL, date_added datetime default NULL, PRIMARY KEY (article_id) );

检查一个Postgres JSON数组是否包含一个string

我有一张桌子来存储关于我的兔子的信息。 它看起来像这样: create table rabbits (rabbit_id bigserial primary key, info json not null); insert into rabbits (info) values ('{"name":"Henry", "food":["lettuce","carrots"]}'), ('{"name":"Herald","food":["carrots","zucchini"]}'), ('{"name":"Helen", "food":["lettuce","cheese"]}'); 我应该如何find喜欢胡萝卜的兔子? 我想出了这个: select info->>'name' from rabbits where exists ( select 1 from json_array_elements(info->'food') as food where food::text = '"carrots"' ); 我不喜欢那个查询。 一团糟。 作为一个全职的兔子守门员,我没有时间去改变我的数据库模式。 我只是想适当地喂我的兔子。 有一个更可读的方式来做这个查询吗?

如何在Rails中进行迁移编写SQL

我有以下SQL我需要做的 CREATE TABLE cars_users2 AS SELECT DISTINCT * FROM cars_users; DROP TABLE cars_users; ALTER TABLE cars_users2 RENAME TO cars_users; 因为我不能使用heroku dataclips来删除一个表,我不能使用dataclips。 所以我想我需要在迁移中做到这一点。 我如何写这个SQL作为迁移?

Postgresql约束

我似乎无法得到这个权利,我想修改一个字段是一个外键,级联删除…我做错了什么? ALTER TABLE my_table ADD CONSTRAINT $4 FOREIGN KEY my_field REFERENCES my_foreign_table ON DELETE CASCADE;

Postgresql:检查模式是否存在?

我需要在运行中创build,pipe理和删除模式。 如果我去创build一个已经存在的模式,我想(有条件的,通过外部的方式)删除并重新创build它的指定。 我怎样才能检查我的Postgres 9服务器上的模式的存在? 目前,我正在这样做: select exists (select * from pg_catalog.pg_namespace where nspname = 'schemaname'); 但我觉得有可能是另一种方式…这是查询Postgres是否存在特定模式的“正确”方式?

PostgreSQL中的约束名称更新

有没有可能在Postgres中更改约束名称? 我有一个PK加上: ALTER TABLE contractor_contractor ADD CONSTRAINT commerce_contractor_pkey PRIMARY KEY(id); 而且我希望有不同的名字,以便与系统的其他部分保持一致。 我应该删除现有的PK约束,并创build一个新的? 还是有一个“软”的方式来pipe理呢? 谢谢!

PostgreSQL查询以逗号分隔列表的forms返回结果

假设你有一个SELECT id from table查询的SELECT id from table (真实的情况是一个复杂的查询),它会返回多个结果。 问题是如何获得所有的id单行返回,逗号分隔?

如何排除array_agg中的空值像使用postgres的string_agg?

如果我使用array_agg来收集名称,我得到我的名字用逗号分隔,但如果有一个null值,该空值也被视为聚合中的名称。 例如 : SELECT g.id, array_agg(CASE WHEN g.canonical = 'Y' THEN g.users ELSE NULL END) canonical_users, array_agg(CASE WHEN g.canonical = 'N' THEN g.users ELSE NULL END) non_canonical_users FROM groups g GROUP BY g.id; 它返回,Larry,Phil而不是Larry,Phil (在我的9.1.2,它显示NULL,Larry,Phil )。 就像这个小提琴一样 相反,如果我使用string_agg() ,它只显示这里的名称(没有空的逗号或空) 问题是我在服务器上安装了Postgres 8.4 ,而string_agg()在那里不起作用。 有没有办法使array_agg工作类似于string_agg()?