I have a python module which copy data from a table to a file.Im using postgresql as database server. COPY is the command is to be used to do the above action.
However in a blog (http://grokbase.com/t/postgresql/pgsql-general/058tagtped/about-error-must-be-superuser-to-copy-to-or-from-a-file) it states that, You can use \copy in 'psql' on the client side, but you have to be a superuser to do COPY on the server side, for security reasons. So I used \copy command. When I try to execute the below method, it results in error as
psycopg2.ProgrammingError: syntax error at or near "\" LINE 1: \copy
I can't find why its throwing error. can someone help me out?
def process():
query="\copy %s TO %s"%('test_table', 'test_file.txt')
@env.with_transaction()
def do_execute(db):
cursor = db.cursor()
cursor.execute(query)
do_execute is a database wrapper, which creates connection and executes the query.
\
is an escape in Python strings, so your string contains the escape \c
. However \c
is an invalid escape in Python, and Python leaves invalid escapes unchanged, so "\copy"
is just \copy
. (Thus @tiziano's answer is misleading).
>>> print "\c"
\c
The real problem is that \copy
is a psql
command, not a server side PostgreSQL command. You can't use it with a client other than psql
. You must instead use the psycopg2
support for COPY
to do it via your client driver.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With