我有两张桌子。表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 ×1