AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-177921

vikrant rana's questions

Martin Hope
vikrant rana
Asked: 2024-08-31 20:30:36 +0800 CST

无法提取 json 列数据(posgres 9.6)

  • 5

我可以运行以下查询来获取给定格式的数据:

SELECT to_timestamp(unnest(ARRAY[[1725042600, 1725043500], [1725041700, 1725042600], [1725043500, 1725044400], [1725040800, 1725041700]]));

      to_timestamp
------------------------
 2024-08-30 18:30:00+00
 2024-08-30 18:45:00+00
 2024-08-30 18:15:00+00
 2024-08-30 18:30:00+00
 2024-08-30 18:45:00+00
 2024-08-30 19:00:00+00
 2024-08-30 18:00:00+00
 2024-08-30 18:15:00+00
(8 rows)

我使用的是 postgres 9.6 及以下版本架构

test_database=> \d fact_completeness_count_requests
                    Table "public.fact_completeness_count_requests"
         Column          |            Type             | Collation | Nullable | Default
-------------------------+-----------------------------+-----------+----------+---------
 request_id              | character varying(64)       |           | not null |
 event_type              | character varying(255)      |           | not null |
 technology              | character varying(255)      |           |          |
 vendor                  | character varying(255)      |           |          |
 name                    | character varying(255)      |           | not null |
 dataset_metadata        | json                        |           | not null |

我正在使用以下查询来生成预期的输出。如上面的查询输出所示。不确定如何在以下查询中使用数组和 to_timestamp 函数。是否可以使用 postgres 9.6 版本进行存档

select 
 request_id
,dataset_metadata->> 'intervals_epoch_seconds' as epoc_seconds
from fact_completeness_count_requests ;

 31319ad1-e848-4ec3-9c3e-967981e2ae45-0  | [[1725048000, 1725051600]]
 7a05cc38-5303-417d-88ce-fe3a604570d2    | [[1725055200, 1725056100]]
 ae6c2b09-8a95-4ac0-9846-6e76071579af    | [[1725050700, 1725051600], [1725049800, 1725050700], [1725048900, 1725049800], [1725048000, 1725048900]]
postgresql
  • 1 个回答
  • 21 Views
Martin Hope
vikrant rana
Asked: 2021-01-08 02:24:56 +0800 CST

从 Postgres 中的文本列解析 JSON 数据

  • 3

我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\", \"T3_FLAG\", \"CLUSTERID\", \"CLUSTERNAME\", \"REGION\", \"NETWORK\"], \"vendor\": \"XXX\", \"timestamp_column_name\": \"COLLECTTIME\", \"regional_unit\": \"cell\"}","rk":1}

我已将其加载到一个临时表中:

create table temp_json (values text);
\copy temp_json from '/home/xyz/cgs_test.json';

现在我想将这些数据提取到单独的列中:

technology 
vendor
name
temporal_unit
regional_unit
dataset_metadata
rk

dataset_metadata是 JSON 列,其他列是字符串。

postgresql
  • 2 个回答
  • 2727 Views
Martin Hope
vikrant rana
Asked: 2020-11-28 11:10:57 +0800 CST

在 Postgres 中检查历史记录和查询日期

  • 1

我PostgreSQL在我的 Linux 终端上运行,如果我们选择pg_backend_pid();它,它会pid为特定会话提供。

下面只给了我们执行的最后一个查询

select pid,
       usename as username,
       datname as database_name,
       query,
       application_name,
       backend_start,
       state,
       state_change
from pg_stat_activity
where pid = 'your-pid';

但看起来这\s给了我们所有的查询历史,但没有日期。我们可以和他们约会吗

如果我们确实将输出保存到文件名,它会存储在Linux服务器上的哪个位置?

\s filename

请建议是否有更具体的方式,实际上我正在寻找在特定日期执行的查询。

postgresql linux
  • 1 个回答
  • 15184 Views
Martin Hope
vikrant rana
Asked: 2020-11-25 12:52:35 +0800 CST

在 PostgreSQL 中使用 ANY 从多个值中选择

  • 1

我在 Postgres 表上运行如下查询:

      Column      |            Type             |     Modifiers
------------------+-----------------------------+--------------------
 status           | character varying(16)  

select FROM incoming_requests WHERE COALESCE(TRIM(status), '') IN ('','OK','ERROR');

这似乎工作正常,但低于

select FROM incoming_requests WHERE COALESCE(TRIM(status), '') = ANY ('','OK','ERROR');

ERROR:  syntax error at or near ","
LINE 1: ...quests WHERE COALESCE(TRIM(status), '') = ANY (" ","OK","ERR...

select FROM incoming_requests WHERE COALESCE(TRIM(status), '') = ANY (" ","OK","ERROR");

ANY还建议使用或在性能上是否有任何差异IN

postgresql
  • 1 个回答
  • 39 Views
Martin Hope
vikrant rana
Asked: 2020-11-24 20:20:45 +0800 CST

在 Postgres 中查询一个 JSON 类型的列

  • 0

我在 Postgres 中有一个表并尝试查询JSON类型列data_meta & source_data

request_id               | bbb1-bdfa3ae765a2
job_type                 | Incoming
data_meta                | {"data_type": "Insurance", "technology": "XYZ", "timestamp_column_name": "JOBTIME"}
source_data              | [{"vendor": "ABCD", "name": "MAPPING_FILE", "data_type": "Insurance"}]
status                   | OK


SELECT * FROM   job_request_table p, json_array_elements(p.data_meta) as element
where element->'data_type' ='Insurance';

得到这个:

ERROR:  operator does not exist: json = unknown
LINE 2: where element->'data_type' ='Insurance';
                                   ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

vendor='ABCD'如果我必须在另一个JSON类型列中搜索,查询是否会有变化"source_data"

postgresql json
  • 1 个回答
  • 1425 Views
Martin Hope
vikrant rana
Asked: 2020-11-20 09:00:25 +0800 CST

在 where 子句中过滤一个 json 列元素

  • -1

我在 PostgreSQL 中有以下查询:

select a.request_id,a.job_type from
(
   select request_id,
       job_id ->> 0 as job_id_1, 
       job_id ->> 1 as job_id_2
   from job_requests_table 
) tab
inner join job_requests_table a
on a.request_id = tab.request_id
where cast(tab.job_id_1 as varchar) like '%test-cluster-id-11111%';

这是有效的发现,因为test-cluster-id-11111被发现是 job_id 列的第一个元素。
它可以在任何地方,并且job_id列也可以有一个元素,也可以有一个以上的元素..可以是四个或五个。

我正在寻找一些解决方案,我不应该指定它必须针对 where 子句中的特定位置进行比较

where cast(tab.job_id_1 as varchar) like '%test-cluster-id-11111%';

而且在内部查询中,如果它有一个元素,它应该生成该列的一个实例,如果它有“n”个元素,那么它应该生成那么多实例。

select request_id,
       job_id ->> 0 as job_id_1, 
       job_id ->> 1 as job_id_2
from job_requests_table 

job_idcolumn 是json类型,可以有多个元素,如

["test-cluster-id-11111", "test-cluster-id-22222","test-cluster-id-33333"]

为什么这不起作用?

select request_id,unnest(string_to_array(job_id, ',')) as element from job_requests_table;
postgresql
  • 1 个回答
  • 749 Views
Martin Hope
vikrant rana
Asked: 2020-11-20 04:02:59 +0800 CST

从 Postgres 表的不同列中查询 JSOn 对象

  • 2

我有一个列类型为的表json。

select request_id,cast(job_info as varchar)  from requests_table where cast(job_id as varchar) like '%4665-b583-3b92218db8ce%';

这里job_info和job_id是json类型列。

它给我带来这样的数据:

          request_id   |                 job_info
--------------------------------------+-------------------------------------------------------------------------------------------------------------------
 f373085d-0124a161b2d7 | ["test-cluster", "test-cluster-id-11111"]
(1 row)

我期望 job_info 数据应该作为两个单独的列检索。

f373085d-0124a161b2d7,test-cluster,test-cluster-id-11111
postgresql
  • 1 个回答
  • 291 Views
Martin Hope
vikrant rana
Asked: 2019-12-13 06:32:41 +0800 CST

从 Oracle 过程中的另一个表创建表

  • 0

我有一个 SQL Server 存储过程,其中我正在使用另一个表创建一个表。

Select Distinct 
 col1
,col2
,col3
,col4
into table_2 
from table_1;

上面的语句将使用选定的列列表创建一个新表作为“table_2”。

我尝试将上述查询转换为 Oracle 语法:

Create table table_2 as 
select
 col1
,col2
,col3
,col4
from table_1;

当我在编辑器中运行它时,它可以正常工作。但是,当我尝试在 Oracle 过程中使用它时,同样的语句给了我错误。

我已经浏览了一些链接,其中说需要创建一些临时变量或存储或循环来执行相同的任务。

我现在很困惑,不知道如何将这个简单的语句转换为有效的 Oracle 语法。

oracle
  • 1 个回答
  • 5394 Views
Martin Hope
vikrant rana
Asked: 2019-10-04 00:19:19 +0800 CST

根据条件从表中选择范围内的值

  • -1

我在 sql server 中有一个表,我想根据某些特定条件选择行。

id name age
1  ABC  33
2  XYZ  45
3  KLM  32
4  HIJ  35
5  PQR  44
6  DEF  55
7  KKK  66
8  XXX  77

我需要搜索第二列名称'KLM',如果它发现它应该返回下一个连续的行范围,例如:

    4  HIJ  35
    5  PQR  44
    6  DEF  55
sql-server sql-server-2012
  • 4 个回答
  • 82 Views
Martin Hope
vikrant rana
Asked: 2019-10-01 23:46:37 +0800 CST

从 SQL Server 表中同时删除多个列

  • 1

我目前正在寻找某种方法同时从 sql server 中的给定表中删除多个列。

一种方法是使用 ALTER 语句,如下所示:

Alter Table [USER_DB].[dbo].my_Table
DROP COLUMN "ID", 
            "Name", 
            "Relationship"  ;

我在一些存储过程中使用上面的语句来删除列并且它工作正常。但是,当我重新运行此语句并且列已被删除时,它会产生问题。

我在 SO 上找到了一些不错的解决方案,即使删除列也不会失败。

IF EXISTS(SELECT 1
          FROM INFORMATION_SCHEMA.COLUMNS
          WHERE TABLE_NAME='my_Table'
          and column_name= 'ID'
          and Table_SChema='DBO')
  BEGIN
    ALTER TABLE my_Table
    DROP COLUMN 
     ID
  END

我尝试用上面的语句同时删除多个列,但它不起作用。

我看起来像这样。

IF EXISTS(SELECT 1
          FROM INFORMATION_SCHEMA.COLUMNS
          WHERE TABLE_NAME='my_Table'
          and column_name= 'ID'
          and column_name= 'Name'
          and column_name ='Relationship'
          and Table_SChema='DBO')
  BEGIN
    ALTER TABLE my_Table
    DROP COLUMN 
     ID
    ,Name
    ,Relationship
  END
sql-server stored-procedures
  • 1 个回答
  • 761 Views
Martin Hope
vikrant rana
Asked: 2019-07-23 01:12:05 +0800 CST

调整 sql server 表上的巨大删除操作

  • 4

我正在根据下面讨论的查询对非常大的 sql server 表执行删除操作。

delete db.st_table_1
where service_date between(select min(service_date) from stg_table)
                   and (select max(service_date) from stg_table);

stg_table 和 stg_table_1 在 service_date 上没有索引。

这两个表都加载了数百万行数据,删除操作需要大量时间。请求您提出改进此查询性能的建议。

我提到了下面问题中描述的策略,但不明白如何实施它。

如何在不丢失数据的情况下删除sql server中的大量数据?

请求您对此提出建议。

更新:

select * into db.temp_stg_table_1
from db.stg_table_1
where service_date not between( select min(service_date) from db.stg_table)
                             and (select max(service_date) from db.stg_table);

exec sp_rename 'stg_table_1' , 'stg_table_1_old'

exec sp_rename 'temp_stg_table_1' , 'test_table_1'

drop table stg_table_1_old

如果按照上述逻辑删除数百万条记录如何。任何优点和缺点。

sql-server delete
  • 3 个回答
  • 2842 Views
Martin Hope
vikrant rana
Asked: 2019-07-11 23:29:21 +0800 CST

提高 sql server 表的连接性能

  • 0

我在 sql server 上有一个表,可以说是 TableA。和另一个表作为 TableB。这两个表都负载很重。

表 A 加载了 35883788 条记录。它在 program_id 列上有很多重复项。

表 B 加载了记录 27343331。它还在 program_id 的列上保存了一个副本。由于某些业务原因,我们需要在两个表上的 program_id 上保留重复记录。

现在我在给定的表上执行左连接:

select 
a.*,b.date_of_birth,
datediff(year,b.date_of_birth,a.from_date)-
(case when dateadd(year,
           datediff(year,b.date_of_birth,a.from_date),b.date_of_birth)
           > a.from_date then 1 else 0
                   end) as age_final,
case when datediff(yyyy,b.date_of_birth,a.from_date) is null then ''
     when datediff(yyyy,b.date_of_birth,a.from_date) <=1 then 'less than 1 year'
     when datediff(yyyy,b.date_of_birth,a.from_date) <=17 then 'then 1 - 17 year'
     when datediff(yyyy,b.date_of_birth,a.from_date) <=29 then 'then 19 - 29 year'
     when datediff(yyyy,b.date_of_birth,a.from_date) <=39 then 'then 30 - 39 year'
     when datediff(yyyy,b.date_of_birth,a.from_date) <=49 then 'then 40 - 49 year'
     when datediff(yyyy,b.date_of_birth,a.from_date) <=59 then 'then 50 - 59 year'
     when datediff(yyyy,b.date_of_birth,a.from_date) <=64 then 'then 60 - 64 year'
else 'More than 64 years' end as Age_band
from TableA a 
left join ( select program_id,date_of_birth,max(process_date) 
            from TableB 
            group by program_id,date_of_birth) b
    on a.program_id=b.program_id;

我的内部查询给了我一组独特的 program_id 使用 group by 语句。

这些表都没有索引。如果我必须在两个表上创建索引,我需要在两个表的 program_id 上都有什么样的索引。

我可以处理哪些其他事情来提高加入性能。

需要建议来优化连接和索引。

sql-server ssis-2016
  • 1 个回答
  • 197 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve