Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I am trying to copy a file, but getting error message

Tags:

sql

postgresql

I am new to postgres, probably missing something silly like (the correct name of my directory). Can someone guide me?

I am following book instructions, Practical SQL by Anthony DeBarros

Code:

copy us_counties_2010 from  'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' with (FORMAT CSV, HEADER);

Error:

ERROR: could not open file "C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv" for reading: Permission denied HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy. SQL state: 42501

copy us_counties_2010 from 'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' with (FORMAT CSV, HEADER);

Expected:

Query returned successfully: 3143 rows affected

Actual:

ERROR: could not open file "C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv" for reading: Permission denied HINT: COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy. SQL state: 42501

like image 500
DCLopes Avatar asked Jan 04 '19 00:01

DCLopes


2 Answers

All that is to be done is: Go to Properties of that particular file by right clicking on it. Then, go to Security tab of the displayed Properties dialog box. Click on Edit option. Permissions dialog box appears, then click on Add button. Type 'Everyone' (without apostrophes) in the "Enter the object names to select" description box and click on OK button. Then, make sure all the checkboxes of "Permissions for Everyone" are selected by just ticking the "Full Control" check box to allow the control access without any restriction. Then, Apply and OK all the tabs to apply all the changes done.

You can now run/execute the query without any errors.

like image 128
magic_moon Avatar answered Sep 22 '22 11:09

magic_moon


As the message tells you, Postres is not allowed to read the file.

If you want to fix that open the Task Manager, and click on "Show processes from all users". Look for the rows with the image name postgres.exe (likely more than one). Remember the value in the column "User Name" (it's probably NETWORK SERVICE). Open the properties of your file, add that user in the "Security" tab and grant read access to them.

Or use psql's \copy as the message suggests.

like image 43
sticky bit Avatar answered Sep 20 '22 11:09

sticky bit