我正在使用带有Postgresql后端的PDN。我有多个区域,每个SOA记录看起来有点像这样:
pdns=#从类型为“SOA”的记录中选择内容;
ns1.example.com网站。hostmaster.example.com网站。2014031201 14400 1800 604800 3600个
ns1.其他区域.tld。hostmaster.otherzone.tld.主机。201402403 14400 1800 604800 3600个
...
如何批量更新序列号?我想学习如何将它们增加一个,或者如何将它们设置为特定的类,因为今天将是2014032800
。
最佳答案
在我看来,模型很差——或者更确切地说,他们已经对数据进行了非规范化处理,以便进行有效的查询,代价是在SQL中很难操作。
你需要:
匹配并提取SOA
增加它
重建原始字符串形式
由于域名中不允许使用空格,因此您可以使用模式匹配来实现这一点,例如string_to_array
,regexp_split_to_table
,等等。
类似于:
CREATE OR REPLACE FUNCTION increment_soa(text) RETURNS text AS $$
SELECT
array_to_string(
array_cat(
part[1:2],
array_cat(
ARRAY[(part[3]::integer + 1)::text],
part[4:7]
)
),
' '
)
FROM (
SELECT string_to_array($1, ' ')
) soa_parts(part)
$$ LANGUAGE sql;
关于sql - 带有DNS记录的Postgresql数据库:如何大量增加串行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22717488/