2017-02-20 8 views
0

Я пытаюсь импортировать CSV-данные, которые у меня есть в postgreSQL, используя Python. Он показывает ошибку, когда я запускаю код.Ошибка при вводе данных CSV в postgreSQL с использованием Python

import csv 
import psycopg2 
import time 
from datetime import datetime, timedelta 

yesterday = datetime.strftime(datetime.now() - timedelta(1), '%Y%m%d') 
print yesterday 

conn = psycopg2.connect(host="172.19.1.228", database="stat", user="radio", 
         password="abcd1234", port="5432") 

tem = "copy e_report FROM '/home/ftpuser/Report/Report_E_RadioStat_' & " \ 
     "'yesterday' & '.csv' With DELIMITER ',' CSV HEADER;" 

cursor = conn.cursor() 

cursor.execute(tem) 

Ошибка ниже:

Traceback (most recent call last): 
    File "C:\Users\p4532\Desktop\python\python_test.py", line 22, in <module> 
    cursor.execute(tem) 
ProgrammingError: syntax error at or near "&" 
LINE 1: ...t FROM '/home/ftpuser/Report/Report_E_RadioStat_' & 'yesterd... 

Пожалуйста, предложите способ разрешить эту ошибку.

ответ

0

В дополнение к операции конкатенации, заметим, что команда копирования обрабатывает имя файла как путь на сервере. Если вы подключаетесь к удаленной базе данных, вам необходимо использовать форму команды from STDIN. Кроме того, поскольку у вас есть заголовок в файле, вы должны использовать copy_expert против copy_from. Последний также принимает файл, но не позволяет указать, что есть заголовок.

sql = "copy e_report from stdin with delimiter ',' csv header" 
with open(filename, 'r') as instream, conn.cursor() as cursor: 
    cursor.copy_expert(sql, instream)