我已经更新了我pg_hba.conf的主人。
host loko replicator 10.0.2.15/32 trust
Run Code Online (Sandbox Code Playgroud)
我确实重新加载了配置。然后我用这个命令创建了一个用户
CREATE USER replicator REPLICATION LOGIN ENCRYPTED PASSWORD 'repl'
Run Code Online (Sandbox Code Playgroud)
loko这是我的主人和replicator用户的数据库。
并在从站上运行此命令
pg_basebackup -h x.x.x.x -D "C:\Program Files\PostgreSQL\9.4\data" -U
replicator -v -P --write-recovery-conf -X stream
Run Code Online (Sandbox Code Playgroud)
结果是
no pg_hba.conf entry for replication connection from host x.x.x.x. user replicator, SSL off
Run Code Online (Sandbox Code Playgroud)
非常感谢您的帮助。我是新手,所以我不知道这有什么问题。我只是跟着教程。
最近,我的一个数据库遇到了 XID 环绕问题。所以,我从模式开始single-user并运行vacuum。一切都很好。但是,当我检查datfrozenxid它时,它约为 15 亿,而我的txid_current约为 700 亿。我觉得,它有很大的不同,有些东西是错误的。
下面的查询,我曾经看到datfrozenxid过pg_database
select datname, datfrozenxid, age(datfrozenxid) from pg_database order by datname;
Run Code Online (Sandbox Code Playgroud)
我已从http://www.rummandba.com/2014/02/understanding-xid-wrap-around.html阅读了 XID 环绕场景
根据上面链接中给出的示例,这对我来说很有意义。但是,我用我的统计数据计算过xidWrapLimit,,,,xidStopLimit。xidWarnLimitxidVacLimit
xidWrapLimit = oldest_datfrozenxid + (MaxTransactionId >> 1);
xidStopLimit = xidWrapLimit - 1000000;
xidWarnLimit = xidStopLimit - 10000000;
(I haven't given all the values here since I am looking only for xidWarnLimit)
Run Code Online (Sandbox Code Playgroud)
所以,这xidWarnLimit是 37.47 亿,而我目前的金额txid_current超过 700 亿。奇怪的是,这个数字txid_current …
我有一张像下面这样的表
ID created sent type
-----------------------------------------------------
0001463583000051783 31-JUL-12 1 270
0081289563000051788 01-AUG-12 1 270
0081289563000051792 01-AUG-12 1 270
0081289563000051791 01-AUG-12 1 270
0081289563000051806 01-AUG-12 1 270
0001421999000051824 06-AUG-12 1 270
0001421999000051826 06-AUG-12 1 270
0001464485000051828 06-AUG-12 1 270
0082162128000051862 09-AUG-12 2 278
0082162128000051861 09-AUG-12 2 278
0022409222082910259 09-AUG-12 3 278
Run Code Online (Sandbox Code Playgroud)
我想有以下输出
created Count
---------------------
31-JUL-12 1
01-AUG-12 4
06-AUG-12 3
09-AUG-12 3
Run Code Online (Sandbox Code Playgroud)
在 Oracle 10g 上使用 SQL Developer 实现这一目标有多难?
我尝试了几个查询来生成这样一个表,最后它没有按日期对计数进行分组,当我们每天平均 5000-10000 笔交易时,它只是给我一个“1”的计数。我可能把它复杂化了。但我想要一些简单的东西,我可以在一个日期范围内每天提取交易量。
我在 ORACLE 中有一个包含两列的表 (emp):
COMPANY OFFICE EMP
------------------------
9999 00001 emp1
9999 00001 emp2
9999 00002 emp3
9999 00002 emp4
0001 99999 emp5
0001 00001 emp6
0001 00002 emp7
0002 00001 emp8
0002 99999 emp9
0003 99999 emp10
0003 00001 emp11
0003 00002 emp12
Run Code Online (Sandbox Code Playgroud)
我想使用以下语句在 EMP 列中获取值:
SELECT
EMP
FROM
emp
ORDER BY COMPANY /*(But 9999 is first)*/, OFFICE /*(But 99999 is first).*/
Run Code Online (Sandbox Code Playgroud)
我不知道怎么办。
有什么办法来设置timeoffset一个中datetimeoffset柱直接,而不必使用SWITCHOFFSET其改变的日期呢?
在下面的帖子中,我们可以看到SWITCHOFFSET将相应地更改日期以及设置时间偏移(这不是我们想要的):http :
//blog.sqlauthority.com/2010/07/15/sql-server-datetime-功能开关偏移示例/
例如,我的日期值为“2013-02-10”,并希望将其记录在不同的时区,而不会丢失“2013-02-10”。只需将 timeoffset 设置为需要的值,例如:+11、-4、-6 等。
是否可以?
谢谢。
我有一个运行良好的 UPSERT 函数,但我批量更新和插入记录,可以修改此函数,以便我将所有记录作为数组传递给此函数,然后它将作为一个事务一次性插入/更新所有记录? 如果记录号 x 失败,它应该回滚撤消在 x 之前插入/更新的任何记录?这是我的 upsert 函数:
CREATE OR REPLACE FUNCTION save_weights(rec tbl_weightment)
RETURNS text AS
$BODY$
DECLARE
myoutput text :='Nothing has occured';
BEGIN
update tbl_weightment set
vname=rec.vname,
iquality=rec.iquality,
vhooks=rec.vhooks,
tstamp=rec.tstamp
vtare=rec.vtare,
vgross=rec.vgross
WHERE id=rec.id;
IF FOUND THEN
myoutput:= 'Record successfully updated';
RETURN myoutput;
END IF;
BEGIN
INSERT INTO tbl_weightment SELECT(rec).*;
myoutput:= 'Record successfully added';
END;
RETURN myoutput;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
Run Code Online (Sandbox Code Playgroud)
这个功能可以修改成这样save_weights(rec tbl_weightment[])吗??任何帮助将不胜感激
我需要创建一个表来保存保存的电子邮件以供将来发送(收件人、发件人、消息、预定发送日期等)。
这里的问题是,直到发送当天我才知道谁应该收到电子邮件。
我的意思是,创建电子邮件是为了发送给某些选定的组织,但该组织的“成员”将不断加入和离开,因此,如果有人创建下个月要发送的电子邮件,则要发送的成员电子邮件地址列表到那时就会有所不同。
所以,我需要在表中保存的是电子邮件应该发送到的组织列表,以便我在实际发送电子邮件时可以查询最新的成员电子邮件地址列表。希望这是有道理的。
无论如何,我的问题是:什么被认为是“正确的设计”?
我最初的想法是只保存以逗号分隔的组织 ID 列表。
我知道我永远不必搜索列表中的组织,所以我不在乎它是否不可查询,而且我知道我可以将其标准化为每个接收组织一行,但这似乎是不必要的重复无目的的数据,特别是因为我只查询发件人而不是收件人。
那么,ID 列表只是一件可怕的、没有好处的、只有新手才会想到的坏事吗?或者说在某些情况下可以使用吗?或者还有其他我不知道的方法可以做到这一点?我确信我不是唯一一个遇到过这种情况的人!
这是我不明白的地方,有人可以解释一下吗?
我创建一个表
CREATE TABLE cali (id SERIAL PRIMARY KEY,
ALK_from char,
ALK_to char,
AND_from char,
AND_to char);
Run Code Online (Sandbox Code Playgroud)
然后我只是尝试像这样从 csv 文件中插入一些数据
\COPY cali FROM '/home/.../data/output/id_cali.csv' (FORMAT CSV);
Run Code Online (Sandbox Code Playgroud)
这给了我这个错误:
ERROR: value "4372840000" is out of range for type integer
CONTEXT: COPY cali, line 1, column id: "4372840000"
Run Code Online (Sandbox Code Playgroud)
我知道 4372840000 会导致整数溢出。这就是为什么我首先尝试将值作为字符插入。
但我的理解是,这id SERIAL PRIMARY KEY是某种自动增量,为什么值 4372840000 用于列id?
该文件看起来像这样
4372840012,4372840013,13,14,
4372840014,4372840014,15,15,
Run Code Online (Sandbox Code Playgroud) 有没有办法在插入查询时自动插入带区域的时间戳?(就像 id 自动递增,因为我不想在 sql 中传递参数作为时间,如果我们使用 zone,则每个地方都相同)。pg 9.1 版。以及如何使用所需的时间格式?
使用Select top 1语句我必须从没有任何唯一键的 8 列表中检索数据。现在我想将此表转换为两列:原始列名到第一列,其各自的值到第二列。
像这样的原始表:
Column1 | Column2 | Column3 | Column4
55 | 108 | 555 | 85
Run Code Online (Sandbox Code Playgroud)
和预期的结果:
ColumnName | Value
Column1 | 55
Column2 | 108
Column3 | 555
Column4 | 85
Run Code Online (Sandbox Code Playgroud) postgresql ×5
sql-server ×2
array ×1
bulkcopy ×1
count ×1
functions ×1
group-by ×1
oracle ×1
oracle-10g ×1
order-by ×1
t-sql ×1
timestamp ×1
timezone ×1
transaction ×1
upsert ×1
vacuum ×1