2016-10-24 37 views
1

我想在我的SQL脚本中使用一个变量。变量的值是100(只是一个数字)。我已经将它存储为csv。文件:C:\ Users \ Dino \ Desktop \ my_file.csv。在postgres脚本中使用变量

我想在SQL脚本来运行这个:

import os 
from ask_db import ask_db_params #this script creates the connection to the database 
import sys, os 
def my_function(cur, conn): 
    sql=""" 
     \set outputdir'C:\\Users\\Dino\\Desktop' 
     \set new_var :outputdir '\\my_file.csv' 
     copy my_file to :'new_var';""" 

cur.execute(sql) 
conn.commit() 
if __name__ == '__main__': 
    try: 
    conn = ask_db_params() 
    cur = conn.cursor() 
    analysis_data(cur,conn) 
    logging.info('Data analysed.') 
    except Exception as e: 
    logging.error('Failure', exc_info=True) 
    exit(1) 

我有错误:

syntax error at or near "\" ....

它指的是第一线。

有关语法的任何帮助?

P.S.我正在运行python来调用sql脚本。 Windows操作系统

+1

你是否调用'psql'来读取脚本? –

+0

代码如下:def my_function(cur,conn):sql =“”“\ set outputdir'C:\\ Users \\ Dino \\ Desktop' \ set new_var:outputdir'\\ my_file.csv' 将my_file复制到:'new_var';“”“。 –

+0

更多,更多!请分享整个代码。编辑问题来完成。 –

回答

0

这不起作用。 \set是一个psql命令,而不是SQL命令。

你将不得不使用字符串操作在Python构造一个SQL字符串,看起来像这样:

COPY my_file TO 'C:\Users\Dino\Desktop\my_file.csv' 

然后使用​​与SQL字符串。