标签: postgresql-10

发生错误时如何停止并退出postgresql恢复

我们正在尝试使用以下命令从命令行将 PostgreSQL 模式转储恢复到数据库中

psql -U postgres -d dbname < filename
Run Code Online (Sandbox Code Playgroud)

我们在恢复过程中在命令行中得到响应,如下所示

psql -U postgres -d dbname < filename
Run Code Online (Sandbox Code Playgroud)

并继续

我的问题是,如果在恢复和恢复继续进行之间发生了一些错误,如何在不通过命令行滚动这些整个响应的情况下检测该错误?或者如果发生错误,是否有自动停止并退出恢复过程?

我们正在使用 PostgreSQL 10

postgresql pg-dump psql postgresql-10

3
推荐指数
1
解决办法
2169
查看次数

如何在 UPDATE 语句中使用 regexp_matches()?

我正在尝试清理一个表,该表有一个非常混乱的 varchar 列,其中包含以下条目:

<u><font color="#0000FF"><a href="http://virginialidar.com/index-3.html#.VgLbFPm6e73" target="_blank">VA Lidar</a></font></u> OR <u><font color="#0000FF"><a href="https://inport.nmfs.noaa.gov/inport/item/50122" target="_blank">InPort Metadata</a></font></u>
Run Code Online (Sandbox Code Playgroud)

我想通过仅保留 html 链接来更新列,如果有多个链接,则用昏迷将它们分开。理想情况下,我会做这样的事情:

UPDATE mytable
SET column = array_to_string(regexp_matches(column,'(?<=href=").+?(?=\")','g') , ',');
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这会在 Postgres 10 中返回一个错误:

ERROR: set-returning functions are not allowed in UPDATE
Run Code Online (Sandbox Code Playgroud)

我假设regexp_matches()是所说的设置返回功能。关于如何实现这一目标的任何想法?

regex sql postgresql sql-update postgresql-10

3
推荐指数
1
解决办法
1838
查看次数

如何在 PostgreSQL 中限制浮点数

我有一个数字 1.00000001,我想将其限制在 -1 和 1 之间,以避免函数上出现输入超出范围错误ACOS()。MCVE 看起来像这样:

SELECT ACOS( 1 + 0.0000000001 );
Run Code Online (Sandbox Code Playgroud)

我的理想是这样的:

SELECT ACOS( CLAMP(1 + 0.0000000001, -1, 1) );  
Run Code Online (Sandbox Code Playgroud)

sql postgresql postgresql-10

3
推荐指数
1
解决办法
2538
查看次数

“Npgsql.PoolManager”的类型初始值设定项引发异常

获取此异常“'Npgsql.PoolManager' 的类型初始值设定项引发异常。” 仅在窗口 7 上。

public string ValidateDefaultInstancePostgreSqlServer()
    {
        string found = "0";

        try
        {
            using (NpgsqlConnection postGresConnection = new NpgsqlConnection())
            {
                postGresConnection.ConnectionString = "Server=localhost;Port=5432;Database=postgres;User Id=postgres;Password=postgre123;Pooling=true;MinPoolSize=1;MaxPoolSize=100;Command Timeout=600;Timeout=600;";
                using (NpgsqlCommand checkDBCommand = postGresConnection.CreateCommand())
                {
                    postGresConnection.Open();

                    found = "1";
                }
            }
        }
        catch (Exception e)
        {}
Run Code Online (Sandbox Code Playgroud)

注意:相同的代码在窗口 10 上工作正常。从 installsheild 设置运行此函数。请帮忙。

.net c# postgresql-10

3
推荐指数
1
解决办法
3855
查看次数

AWS RDS Postgres 最大实例和表大小

提前致谢!

我计划使用 AWS RDS Postgres 处理相当大的数据 (> ~50TB),但有几个问题尚未解答

  1. 16TB 是 AWS RDS Postgres 实例的最大限制吗?如果是,人们如何存储 > 16TB 的数据。

  2. RDS 的 16TB 限制是 Postgres 可以在 AWS 上存储的压缩后最大数据库大小。

  3. 此外,我在设置 AWS RDS Postgres 数据库实例时没有看到任何启用压缩的选项。如何在 AWS RDS Postgres 中启用压缩?

我已经关注了:

  1. https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Limits.html

  2. https://blog.2ndquadrant.com/postgresql-maximum-table-size/(其中 Postgres 表的大小可以大于 32TB)。

  3. https://wiki.postgresql.org/wiki/FAQ#What_is_the_maximum_size_for_a_row.2C_a_table.2C_and_a_database.3F

sql postgresql amazon-web-services amazon-rds postgresql-10

3
推荐指数
1
解决办法
6419
查看次数

删除对象的权限被拒绝

跑步drop owned by <username>;给了我ERROR: permission denied to drop objects。我可以登录/创建/插入/更新/更改等。

像这样创建数据库和角色:

  1. sudo psql -U postgres
  2. CREATE USER <username> WITH PASSWORD '<password>';
  3. CREATE DATABASE <dbname> OWNER <username> ;

查找问题,这些是我运行的一些没有解决问题的东西:

  • GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO <username>;
  • GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO <username>;
  • GRANT ALL PRIVILEGES ON DATABASE <dbname> to <username>;
  • GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO <username>;

postgresql psql postgresql-10

3
推荐指数
1
解决办法
2826
查看次数

pg_upgradecluster 花费太多时间(165GB 数据库大约需要 8 小时)有解决方法吗?

我正在尝试将 postgres-9.3 升级到 postgres-10,数据库大小约为 165GB。我正在使用“sudo pg_upgradecluster 9.3 main”来执行此操作,但需要大约 8 小时,这对于我的实时 Web 应用程序来说停机时间太多了。有任何建议可以让它变得更好、更少的停机时间和更快的速度。

postgresql postgresql-9.3 pg-upgrade postgresql-10

3
推荐指数
1
解决办法
2069
查看次数

Postgres 将空字符串转换为 NULL

我运行 Postgres 数据库并希望将空字符串转换为NULL。以下片段应该对所有列执行此操作,但它不起作用。

SELECT * FROM schema.table NULLIF(columnname,'');
Run Code Online (Sandbox Code Playgroud)

错误信息是:

ERROR:  syntax error at or near "''"
LINE 2:  NULLIF(columnname,'');
Run Code Online (Sandbox Code Playgroud)

sql postgresql null ifnull postgresql-10

3
推荐指数
1
解决办法
6291
查看次数

如何控制 jsonb_object_agg 中字段的顺序

我正在尝试构建一个 jsonb 对象,其键按字母顺序排列。然而,它似乎jsonb_object_agg(k, v)忽略了输入的顺序,并按密钥长度对输入进行排序,然后按字母顺序排序。

例如

select jsonb_object_agg(k, v order by k) from (
    values ('b', 'b_something'), ('ab', 'ab_something')
) as t (k,v)
Run Code Online (Sandbox Code Playgroud)

给出

{
  "b": "b_something",
  "ab": "ab_something"
}
Run Code Online (Sandbox Code Playgroud)

但我需要的是

{
  "ab": "ab_something"
  "b": "b_something",
}
Run Code Online (Sandbox Code Playgroud)

有办法实现这一点吗?

上下文 我正在展平一个 json 列,其中的内容遵循统一但笨重的模式。由于这个有用的答案,我已经成功地做到了这一点,但是按键的顺序并不是我需要它们的方式。

postgresql aggregate-functions postgresql-10

3
推荐指数
1
解决办法
2972
查看次数

Postgres 从 10 升级到 12:pg_upgrade 由于存在所需库而失败

$ /usr/pgsql-12/bin/pg_upgrade \
> -b /usr/pgsql-1
pgsql-10/ pgsql-12/
> -b /usr/pgsql-10/bin/ \
> -B /usr/pgsql-12/bin/ \
> -d /var/lib/pgsql/1
10/ 12/
> -d /var/lib/pgsql/10/data/ \
> -D /var/lib/pgsql/12/data/ \
> --check

Performing Consistency Checks
-----------------------------
Checking cluster versions ok
Checking database user is the install user ok
Checking database connection settings ok
Checking for prepared transactions ok
Checking for system-defined composite types in user tables ok
Checking for reg* data types in user tables ok
Checking for contrib/isn with bigint-passing …
Run Code Online (Sandbox Code Playgroud)

database postgresql upgrade postgresql-10 postgres-12

3
推荐指数
1
解决办法
3479
查看次数