1

I am trying to run the below command on the unix console :

env 'PGOPTIONS=-c search_path=admin -c client_min_messages=error' psql -h hostname -U user -p 1111 -d platform -c "CREATE TEMP TABLE admin.tmp_213 AS SELECT * FROM admin.file_status limit 0;\copy admin.tmp_213(feed_id,run_id,extracted_date,file_name,start_time,file_size,status,crypt_flag)  FROM '/opt/temp/213/list.up' delimiter ',' csv;UPDATE admin.file_status SET file_size = admin.tmp_213.file_size FROM  admin.tmp_213 A WHERE  admin.file_status.feed_id = A.feed_id and admin.file_status.file_name = A.file_name;"

I am getting the below error:

ERROR:  syntax error at or near "\"
LINE 1: ...* FROM admin.file_status limit 0;\copy admi...

If I use the above command without a backslash before COPY, it gives me the below error:

ERROR:  cannot create temporary relation in non-temporary schema

I am doing the above to implement the solution as mentioned here: How to update selected rows with values from a CSV file in Postgres?

djgcp
  • 163
  • 1
  • 14

1 Answers1

2

Your first error is because metacommands like \copy cannot be combined in the same line as regular commands when given with -c. You can give two -c options, with one command in each instead.

The second error is self-explanatory. You don't get to decide what schema your temp table goes to. Just omit the schema.

jjanes
  • 37,812
  • 5
  • 27
  • 34