2016-10-24 10 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 OS

+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コマンドではありません。

あなたはこのようになりますSQL文字列を構築するためにPythonで文字列操作を使用する必要があります:

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

その後、そのSQL文字列で​​を使用しています。

関連する問題