2016-10-24 39 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字符串。