小编Jin*_*ska的帖子

PostgreSQL 如何向 regexp_split_to_table() 创建的行添加序数?

我有两张桌子。表logfile在一个属性中包含整个文本文件;表的rawtext每一行应包含文本文件中的一行文本:

create table LOGFILE ( LOGF_PK serial primary key, TEXT_CONTENT text ) ;
create table LOGTEXT ( LT_PK serial primary key, 
  LOGF_PK integer not null references LOGFILE( LOGF_PK ),
  LINENUM  integer,
  LINETEXT varchar(255)
);
Run Code Online (Sandbox Code Playgroud)

我可以将 TEXT_CONTENT 拆分为一组行,但我无法(不知道如何)在表 LOGTEXT 中生成行号,例如 LOGFILE.TEXT_CONTENT 中的第一行将位于一行 <LT_PK>、<LOGF_PK> 中, 1、‘第一行文字’等

此查询返回我期望获得的内容,但没有行号:

select LOGF_PK, regexp_split_to_table( TEXT_CONTENT, '\r?\n' ) as LINETEXT ;
Run Code Online (Sandbox Code Playgroud)

但是,我无法获得任何行号。我尝试了变体1:

select LOGF_PK
  , row_number() over (partition by LOGFILE.LOGF_PK) as LINENUM
  , regexp_split_to_table( TEXT_CONTENT, '\r?\n' )) as LINETEXT
from LOGFILE
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,LINENUM 始终为 …

postgresql

2
推荐指数
1
解决办法
2030
查看次数

标签 统计

postgresql ×1