我想在 bash 中使用 psql 返回的值。这是脚本:
psql "connection parameters" -c "SELECT pg_database_size('dbname');"
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
pg_database_size
------------------
5773072
(1 row)
Run Code Online (Sandbox Code Playgroud)
但我只想要这样5773072我就可以在日志记录中使用它。有人可以帮忙吗?
如果我使用 postgresql 9.2,这可能不会成为问题,但是我(还)无法从 9.1 升级,并且我正在使用 9.1 的 json 数据类型扩展。我正在尝试实现如下所示的 json 对象:
[
{ "type": "add"
, "id":"285947086237736960"
, "version" : 1
, "lang":"en"
,"fields": {
"id" : "285947086237736960"
, "created_at":"2013-01-01"
, "content":"bla bla blah LOL ROFL"
}
}, ...
]
Run Code Online (Sandbox Code Playgroud)
嵌套的“fields”属性来自名为“tweets”的数据库表。两个 id 来自同一个表。但是,类型、版本、语言始终相同。我查看了/sf/ask/925899971/的建议,其中提到使用别名子查询表达式。这根本不起作用,我仍然得到 f1、f2 等。使用 row_to_json 创建 JSON 时将名称设置为属性的建议适用于单个级别,但我无法让它适用于嵌套“字段” “ 属性。
据我所知,这只适用于类似于以下的 with 语句:
with tweets(type, id) as (
select 'add' as type, tweets.id from tweets
) select row_to_json(tweets) from tweets;
Run Code Online (Sandbox Code Playgroud)
但是,如何获得嵌套的“字段”?任何帮助是极大的赞赏!
我有一个 400GB 的内存Postgres 9.3.4 DB在运行Fedora20,每个表都有一些索引。我已将共享缓冲区提高到 4GB(系统有 16GB 可用),在内核中设置 shm 并将 设为effective_cache_size12GB。work_mem是 60MB
然后我每秒对数据库运行数百个查询很长一段时间。我的整个系统(带操作系统)仅使用 3GB RAM 并且没有交换。
Postgres并没有真正使用它可能使用的 RAM,我宁愿最大化我的 RAM 并获得查询/索引性能(如果可能)。
我是否缺少一些配置方面的知识?
我有JSON一个文件如下:
[xyz@innolx20122 ~]$ cat cgs_test.json
{"technology":"AAA","vendor":"XXX","name":"RBNI","temporal_unit":"hour","regional_unit":"cell","dataset_metadata":"{\"name\": \"RBNI\", \"temporal_unit\": \"hour\", \"technology\": \"LTE\", \"is_dimension\": false, \"timestamp_column_pattern\": \"yyyyMMddHHmmss\", \"data_type\": \"PM\", \"source_name\": \"RBNI\", \"intervals_epoch_seconds\": [[1609941600, 1609945200]], \"identifier_column_names\": [\"CELLID\", \"CELLNAME\", \"radio_frequency_band\", \"ENODEBID\", \"ENODEBNAME\", \"SBNID\", \"SITEID\", \"SITENAME\", \"CLUSTER_PRIORITY\", \"CP_SITE\", \"IBC\", \"NETWORK_TIER\", \"SITE_TYPE\", \"T3_FLAG\", \"CLUSTERID\", \"CLUSTERNAME\", \"REGION\", \"NETWORK\"], \"vendor\": \"ZTE\", \"timestamp_column_name\": \"COLLECTTIME\", \"regional_unit\": \"cell\"}","rk":1}
{"technology":"AAA","vendor":"XXX","name":"RRCADD","temporal_unit":"hour","regional_unit":"cell","dataset_metadata":"{\"name\": \"RRCADD\", \"temporal_unit\": \"hour\", \"technology\": \"AAA\", \"is_dimension\": false, \"timestamp_column_pattern\": \"yyyyMMddHHmmss\", \"data_type\": \"PM\", \"source_name\": \"RRCADD\", \"intervals_epoch_seconds\": [[1609941600, 1609945200]], \"identifier_column_names\": [\"CELLID\", \"CELLNAME\", \"radio_frequency_band\", \"ENODEBID\", \"ENODEBNAME\", \"SBNID\", \"SITEID\", \"SITENAME\", \"CLUSTER_PRIORITY\", \"CP_SITE\", \"IBC\", \"NETWORK_TIER\", \"SITE_TYPE\", …Run Code Online (Sandbox Code Playgroud) 我需要在我的表中添加一列,其中包含每次出现的次数。因此,如果值是唯一的,则列值应为 1,但如果有多个副本,我需要为每一行 (1,2...) 设置一个不同的值
例如,数据库是 postgres
| ID | 价值 | 数数 |
|---|---|---|
| 1 | 一种 | 1 |
| 2 | 一种 | 2 |
| 3 | 乙 | 1 |
| 4 | 乙 | 2 |
| 5 | 乙 | 3 |
| 6 | C | 1 |
数据库示例https://dbfiddle.uk/?rdbms=postgres_10&fiddle=0e7132f3f094bd93b390ccae2e811696
我已经statement_timeout=1000在 Postgres DB 中配置了
我正在使用来自 Java 应用程序的 JDBC 驱动程序访问数据库表。如果语句超时,JDBC 驱动程序将抛出异常。如果抛出异常,我有一个将被执行的逻辑。
现在我想测试这个功能,有没有办法让查询在1000毫秒内不返回结果?
如何从一个表中选择一行,但如果它不存在,则回退到从辅助表中选择它?这是我想要实现的简化版本
create table table_1 (
person TEXT,
favourite_number INT
);
create table table_2 (
person TEXT,
favourite_number INT
);
insert into table_1 (person, favourite_number) values
('Bob', 1),
('Fred', 2)
;
insert into table_2 (person, favourite_number) values
('Bob', 30),
('Alice', 70)
;
Run Code Online (Sandbox Code Playgroud)
我想得到以下结果:
| person | favourite_number |
|--------|------------------|
| Bob | 1 |
| Alice | 70 |
| Fred | 2 |
Run Code Online (Sandbox Code Playgroud)
注意它如何从第一个表中选择 Bob 和 Fred。即使鲍勃出现在第二张桌子上,因为我们已经拿到了他,我们还是把他从第一张桌子上拿走了。Alice 只出现在第二个表中。
到目前为止,这是我尝试过的,但我无法让所有 3 个返回,请帮助。
select
t1.*
from table_1 t1
where t1.person not in …Run Code Online (Sandbox Code Playgroud) 是否可以将元数据附加到 Postgres 11 中的存储过程?
特别是,我有带有版本号的数据库迁移。因此,当我的迁移脚本运行并可能用 覆盖当前存储的过程时CREATE OR REPLACE PROCEDURE,我希望能够使用更新的版本号将元数据附加到存储过程。
另外,这之后如何查询?
我有一张这样的表:
-------------------------------------------------
| id | description | parent_id | cost
--------------------------------------------------
| 1 | Radiology | NULL | 0.00
| 2 | Lab Tests | NULL | 0.00
| 3 | Normal Radiology | 1 | 0.00
| 4 | Resonance | 1 | 100.00
| 1100 | Cerebral Resonance| 4 | 200.00
| 1900 | Blood Tests | 2 | 10.00
| 2044 | Calcium | 2 | 50.00
---------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我需要生成这种输出:
Radiology
-->Normal Radiology
-->Resonance
-->Cerebral Resonance with contrast …Run Code Online (Sandbox Code Playgroud)