我想描述 postgres 数据库中的每个表。
目前我有这个:
psql -d db -c "\d *" > db_description.txt
Run Code Online (Sandbox Code Playgroud)
但这也包括所有序列、视图等。
是否有*模式只匹配表的命令?
或者有另一种方法可以做到这一点?
我们有一个UPSERT功能通过on conflict do set. 如何在 set 语句中有条件地设置值,例如
if(excluded.col1 is null) col1=table.col1 else col1=excluded.col1
Run Code Online (Sandbox Code Playgroud)
我们使用的是 Postgres 9.5。
我在 SQL Server 中有程序可以打印给定国家/地区的所有玩家。我尝试将其转换为 plpgsql,但出现错误。
CREATE PROCEDURE kraj_pilkarze @kraj varchar(30)
AS
DECLARE @idkraj INT
DECLARE @nazwa_zespolu varchar(30)
SELECT @idkraj = id_kraj FROM kraj WHERE @kraj=nazwa
DECLARE kursor_pilk CURSOR
FOR SELECT imie,nazwisko, id_zespol, id_kraj FROM pilkarz
DECLARE @imie varchar(20), @nazwisko varchar(30), @zespol int, @d_kraj int
OPEN kursor_pilk
FETCH NEXT FROM kursor_pilk INTO @imie, @nazwisko,@zespol, @d_kraj
WHILE @@FETCH_STATUS=0
BEGIN
IF @d_kraj=@idkraj
BEGIN
SELECT @nazwa_zespolu = nazwa FROM zespol WHERE @zespol=id_zespol
PRINT @imie+' '+@nazwisko+', '+@nazwa_zespolu
FETCH NEXT FROM kursor_pilk INTO …Run Code Online (Sandbox Code Playgroud) 我有一个表reservation的列roomno(INTEGER),startdate(DATE),enddate(DATE)与主键(roomno, startdate)。
我如何在表上设置约束,以便不允许预订重叠?
我试图在SQLFIDDLE postgreSQL9.3 中实现这个
例如:
101 2016-01-01 2016-01-05
101 2016-01-03 2016-01-06 [This row should not be possible to insert]
Run Code Online (Sandbox Code Playgroud)
startdate并且enddate是数据类型date。
postgresql database-design exclusion-constraint postgresql-9.3 range-types
我有一个大问题,我对 postgresql 不太好,因为我使用 Django 进行查询,而且我只有 sql 查询的基础知识。
我的问题是有一个问题,超级用户删除了一个与我的表“客户”相关的字段(我不知道她是怎么做的,我没有设计系统,我只是管理它),所以有 120 个客户端从表中消失了,我从昨天开始备份(我知道备份有多重要),我想将所有数据从我的备份“复制”到缺少行的数据库中。
我试图只从 pgadmin 恢复表(简单的方法),但它说“重复键值违反了唯一约束“user_client_pkey”,详细信息:Key(id) = 461 已经存在。所以我猜我无法恢复,因为有与确切 id 匹配的值,是否有任何简单的方法(或程序)可以复制丢失的行,只提供 id 并填充我备份中的数据?
类似于比较行,如果没有具有该 id 的行,则在那里插入数据?我知道这不是一个简单的查询,但任何帮助都会很棒。我确定最简单的方法是回滚、删除数据库和恢复,但是有这么多表有更多信息,客户端是唯一真正需要恢复的。
我尝试创建一个新表并从备份中恢复数据但它没有填充(可能是因为它的名称与新表不匹配),我还更改了缺少行的表的名称,然后创建一个新表并从备份中恢复,但 pk 丢失了,我收到此错误:
我更改了表cliente的原始表,然后创建了一个新表并将其命名为原始表,恢复数据库,它填满了,但给了我这个错误:
由于表 public."admin_clienteB" 没有主键或 OID,您只能查看数据。没有主键的“编辑数据”工具无法插入新行和更改现有行。
任何帮助都会很棒。
如何COPY在 Postgres 中创建 CSV 文件以及不在 CSV 中的列的静态数据?在 MySQL 中,我可以LOAD DATA INFILE ...对列名以及文件中不存在的列的任何值进行分析。我想用 Postgres 做类似的事情,但COPY命令不支持。
我有一个以以下结尾的函数:
INSERT INTO configuration_dates (
cols...
) VALUES (
values...
) RETURNING id INTO ret_id;
RETURN ret_id;
Run Code Online (Sandbox Code Playgroud)
我想删除该INTO ret_id部分,而是执行以下操作:
RETURN (INSERT INTO configuration_dates (
weekly_date_configuration_id,
"from",
"to",
price,
activity_configuration_id
) VALUES (
wdc_id,
from_ts,
from_ts + wdc.duration,
wdc.price,
wdc.activity_configuration_id
) RETURNING id);
Run Code Online (Sandbox Code Playgroud)
但我还没有找到如何实现这一点。
编辑:添加整个功能
CREATE FUNCTION make_date_from_configuration(wdc_id UUID, from_date DATE)
RETURNS INTEGER AS $$
DECLARE
from_dow INT := EXTRACT(isodow FROM from_date); -- day of the week (1 - 7)
wdc weekly_date_configurations;
from_ts TIMESTAMP;
ret_id INTEGER;
BEGIN
SELECT * …Run Code Online (Sandbox Code Playgroud) 有没有办法将现有的HSTORE数据类型列(具有数据)修改JSON为 Postgres 数据库中的数据类型?
我对 SQL 和数据库管理比较陌生。我正在维护/修改一个与 Postgresql 交互的 PHP 应用程序,并且遇到了以下语句:
SELECT * FROM client_messages c;
Run Code Online (Sandbox Code Playgroud)
我不明白最后一个“c”字符的含义。事实上,似乎可以在 SELECT 的 FROM 子句中的表名后添加随机字符,而不会影响查询结果。尝试使用“psql”实用程序,我发现这三个查询都产生相同的结果,没有任何错误:
SELECT * FROM cltk2980dat c LIMIT 5;
SELECT * FROM cltk2980dat LIMIT 5;
SELECT * FROM cltk2980dat kdopwijfdwlhoeufhnekfhyufhf LIMIT 5;
Run Code Online (Sandbox Code Playgroud)
然而,我正在维护的程序的作者似乎真的想要 SELECT 查询中的最后一个 'c' 字符。我在 SQL 语法手册中找不到对此的任何解释,尽管我可以找到对修改 SELECT 的 FROM 子句的许多其他方法的解释。
最后一个角色有什么意义吗?在某些情况下,FROM 表名之后的明显随机字符是否有任何意义?
我在 MySql 中有这个视图查询,它可以工作
SELECT s.id AS id,
s.customer_id AS customer_id,
s.shipment_status_id AS shipment_status_id,
ss.name AS shipment_status_name,
s.ship_from_date AS ship_from_date,
s.ship_to_company AS ship_to_company,
s.ship_from_company AS ship_from_company,
s.ship_to_address1 AS ship_to_address1,
s.ship_to_address2 AS ship_to_address2,
s.ship_to_postal_code AS ship_to_postal_code,
s.ship_to_city AS ship_to_city,
c.country AS country,
p.tracking_numbers AS tracking_numbers,
s.quote_service_name AS quote_service_name,
s.quote_total_charge AS quote_total_charge,
p.weight AS weight,
p.insurance_amount AS insurance_amount,
p.cod_amount AS cod_amount,
z.fedex AS ZONE,
s_p.code AS state_province_code,
s_p.zone AS state_province_zone,
ss.name AS status_name,
i.total AS total,
cust.first_name AS customer_first_name,
cust.last_name AS customer_last_name,
(CASE …Run Code Online (Sandbox Code Playgroud) postgresql ×10
functions ×2
plpgsql ×2
bulk-insert ×1
cursors ×1
django ×1
group-by ×1
hstore ×1
json ×1
parameter ×1
pgadmin ×1
range-types ×1
sql-server ×1
upsert ×1