2016-06-09 12:13 GMT+12:00 John R Pierce <pie...@hogranch.com>: > On 6/8/2016 4:24 PM, Patrick B wrote: > > > I need to do a file backup for each account_id. > > Example: > > COPY (SELECT * FROM backup_table WHERE id = 1112 AND status = 1) TO > '/var/lib/pgsql/1112.sql'; > > > COPY generates CSV and similar formats, not .sql. only pg_dump, the > command line utility, outputs .SQL > > begin > > FOR crtRow in execute 'select account_id from backup_table WHERE > migrated = 1 AND account_id = '|| $1 > > > LOOP > > COPY > > (SELECT * FROM gorfs.WBP_4868_backup_table_BLOBS WHERE migrated = > 1 AND account_id = crtRow.account_id) > > TO '/var/lib/pgsql/gorfs_backup/%s.sql'; > > end loop; > > return integer; > > end > > try... > > > begin > > FOR crtRow in > select account_id from backup_table WHERE migrated = 1 AND > account_id in $1 > > LOOP > > COPY > > (SELECT * FROM gorfs.WBP_4868_backup_table_BLOBS WHERE migrated = > 1 AND account_id = crtRow.account_id) > > TO '/var/lib/pgsql/gorfs_backup/' || crtRow.account_id || '.csv'; > > end loop; > > return integer; > > end > > > but you can't exactly return 'integer' if its a list of values, so I'm not > sure what it is you want to return from this function... > > > > -- > john r pierce, recycling bits in santa cruz > >
CREATE or REPLACE FUNCTION function(integer) RETURNS void AS $$ declare crtRow record; begin FOR crtRow in EXECUTE 'select DISTINCT(account_id) from backup_table WHERE migrated = 1 AND account_id IN '|| $1 LOOP COPY (SELECT * FROM backup_table WHERE migrated = 1 AND account_id = crtRow.account_id) TO '/var/lib/pgsql/' || crtrow.account_id || '.csv'; end loop; end $$ language 'plpgsql'; ERROR: ERROR: syntax error at or near "||" > LINE 12: TO '/var/lib/pgsql/' || crtrow.account_id |...