정확히 내가 예상 한 바에 따르면 솔루션 아래에 저에게 도움이되었습니다. MYTABLE을 실제 테이블로 확장하는 솔루션에는 더 많은 열이 포함됩니다. 또한 동일한 요구 사항을 가진 다른 사람들에게도 더 도움이 될 것입니다.
컬럼 : 샘플 값
FileId, StoryId, FileName, FileHref, InsertDate
INSERT 저장된 프로 시저 입력 PARAMS :
v_StoryId = 5678,
v_FileName = 'File_1.jpg,File_2.pdf,File_3.jpg,File_4.pdf'
v_FileHref = 'www.abc.com/File_1.jpg,www.abc.com/File_2.pdf,www.abc.com/File_3.jpg,www.abc.com/File_4.pdf'
코드 블록 작동 :
INSERT INTO MYTABLE
(SELECT NextVal('mytable_fileid_seq')
,v_StoryId
,FileName.regexp_split_to_table
,FileHref.regexp_split_to_table
,LOCALTIMESTAMP
FROM ( select row_number() over() as idx,
i as regexp_split_to_table
from UNNEST(STRING_TO_ARRAY(v_FileName,',')) i
)as FileName
JOIN ( select row_number() over() as idx,
i as regexp_split_to_table
from UNNEST(string_to_array(v_FileHref,',')) i
)as FileHref
ON FileName.idx = FileHref.idx
);
결과 :
FileId | StoryId | FileName |FileHref |InsertDate
--------------------------------------------------------------------------------------------
23 | 1234 |File_1.jpg |www.abc.com/File_1.jpg | 2016-12-14 12:11:54.374933
--------------------------------------------------------------------------------------------
24 | 1234 |File_2.pdf |www.abc.com/File_2.pdf | 2016-12-14 12:11:54.374933
--------------------------------------------------------------------------------------------
25 | 1234 |File_3.jpg |www.abc.com/File_3.jpg | 2016-12-14 12:11:54.374933
--------------------------------------------------------------------------------------------
26 | 1234 |File_4.pdf |www.abc.com/File_4.pdf | 2016-12-14 12:11:54.374933
그러나 현재 unnest()와 함께 regexp_split_to_table()을 사용하면 좋지 않지만 필자의 경우와 같이 쉼표로 구분 된 값은 30으로 증가하지 않을 수 있으므로 스 니펫은 정상이어야합니다. 현재 pgsql에 익숙하지 않지만 누군가가 더 나은/깔끔한 솔루션을 제공한다면 분명히 감사 할 것입니다.
감사의 말 : jcaron 솔루션 방향을 제시했습니다.
달성하려는 목표가 명확하지 않습니다. 입력 예와 얻을 수있는 것을 제공 할 수 있습니까? 당신이 여러 개의 파일 이름, 몇 개의 URL, 각 하나씩을 얻으면 나는 확신하지 못한다. – jcaron
확인. 내가 언급 한 것처럼 텍스트 형식의 입력 매개 변수가 2 개있는 함수가 있다고 가정합니다. param v_FileName은 'file1.jpeg, file2.pdf, file3.doc'값을 포함 할 수 있습니다. 동시에 v_FileUrl에는 'www.abc.com/file1.jpeg,www.abc.com/file2.pdf,www.file3.doc'이 포함될 수 있습니다. 이 데이터로 코드는 각 열에 해당 값이있는 테이블에 3 행을 삽입해야합니다. –