2017-09-12 4 views
1

TIME (UpperCase)으로 열 이름을 가진 테이블이 Postgres에 있습니다. SQL 명령을 사용하여 Postgres에서이 테이블에 csv를 삽입하는 것은 쉽습니다."TIME"열이있는 테이블을 Python에서 액세스 할 수 없습니다.

COPY american_district FROM 'O:\Python\PostGREsql\district.csv' WITH CSV HEADER DELIMITER AS ',' NULL AS '\N'; 

하지만 아래의 파이썬 코드를 사용하여 테이블에 같은 CSV를 삽입하는 것은 나에게 같은 오류를 제공

f = open('O:\Python\PostGREsql\district.csv') 
cur_DBKPI.copy_from(f, 'american_district', sep=',', null='') 

ERROR : 나는 그것의 가장 좋은 방법은 열을 유지하는 것을 발견

psycopg2.DataError: invalid input syntax for type date: "TIME" 
CONTEXT: COPY american_district, line 1, column time: "TIME" 

소문자로는 해결 방법이 있습니까?

+1

이 오류는 파이썬 코드가 첫 번째 줄을 머리글이 아니라 데이터라고 생각한다는 것을 나타냅니다. 따라서 그것은'TIME' 값을 그 열에 삽입하도록 보냅니다. 분명히 작동하지 않을 것입니다. UPPER 또는 소문자 열 이름과는 아무 관련이 없습니다. 파이썬 메소드에'HEADER' 옵션을 전달해야합니다. ([데이터베이스 이름] (https://wiki.postgresql.org/wiki/FAQ#What_is_PostgreSQL.3F_How_is_it_pronounced.3F_What_is_Postgres.3F)은 Postgres 또는 PostgreSQL 중 하나입니다 ** ** PostGREsql 또는 PostGre 또는 PosGreSQL이 아닙니다.) –

+0

@Horse With No Name : 의견을 보내 주셔서 감사합니다. 나는 지금 문제가있다. – MoChen

답변

0

"copy_expert"를 사용하여 내 쿼리의 구문을 변경하여 머리글을 추가하여 작동 시켰습니다.

f = open('O:\Python\PostGREsql\district.csv') 
sql = "COPY american_district FROM STDIN WITH CSV HEADER DELIMITER AS ',' NULL AS '\\N'" 
cur_DBKPI.copy_expert(sql=sql,file=f)