将一列的数据写入 unix 文件,另一列的数据与文件名相同的记录
Write data of one column to unix file with data in another column of the same record as file name
我在 Postgresql 中有一个任务,我一直坚持下去。你能帮忙吗,这样我就可以继续完成任务了。
我有一个名为 'JOBS' 的 table,样本数据如下所示
JOB_ID ITEM
---------------------
1 APPLE
2 BANANA
3 CARROT
我需要将 ITEM 列中的数据写入 unix 文件。文件名必须是相应 ITEM 记录的相关 JOB_ID。
例如文件 1.txt 应包含数据 APPLE。
文件 2.txt 应包含数据 BANANA
提前感谢您的宝贵时间和帮助。
我会在 execute
中使用 copy
命令来做到这一点。
就像这样:
DO
$$
DECLARE
vRECORD RECORD;
vSQL TEXT;
vMYPATH TEXT;
BEGIN
-- place your path here - be sure having write permission to postgres user
vMYPATH = '/home/christian/Temp/';
-- loop your records saving each record to a single file
FOR vRECORD IN SELECT JOB_ID, ITEM FROM JOBS ORDER BY JOB_ID
LOOP
vSQL = 'COPY (SELECT ''' || vRECORD.ITEM || ''' AS ITEM) TO ''' || vMYPATH || vRECORD.JOB_ID || '.txt''' ;
RAISE NOTICE 'SQL=%', vSQL;
EXECUTE vSQL;
END LOOP;
END;
$$
;
我在 Postgresql 中有一个任务,我一直坚持下去。你能帮忙吗,这样我就可以继续完成任务了。
我有一个名为 'JOBS' 的 table,样本数据如下所示
JOB_ID ITEM
---------------------
1 APPLE
2 BANANA
3 CARROT
我需要将 ITEM 列中的数据写入 unix 文件。文件名必须是相应 ITEM 记录的相关 JOB_ID。
例如文件 1.txt 应包含数据 APPLE。 文件 2.txt 应包含数据 BANANA
提前感谢您的宝贵时间和帮助。
我会在 execute
中使用 copy
命令来做到这一点。
就像这样:
DO
$$
DECLARE
vRECORD RECORD;
vSQL TEXT;
vMYPATH TEXT;
BEGIN
-- place your path here - be sure having write permission to postgres user
vMYPATH = '/home/christian/Temp/';
-- loop your records saving each record to a single file
FOR vRECORD IN SELECT JOB_ID, ITEM FROM JOBS ORDER BY JOB_ID
LOOP
vSQL = 'COPY (SELECT ''' || vRECORD.ITEM || ''' AS ITEM) TO ''' || vMYPATH || vRECORD.JOB_ID || '.txt''' ;
RAISE NOTICE 'SQL=%', vSQL;
EXECUTE vSQL;
END LOOP;
END;
$$
;