2012-07-10 3 views
0

나는 파이썬에서 오라클로부터 레코드를 읽어서 Vertica에 삽입하는 작은 어플리케이션을 작성하고 있습니다.날짜 값을 첨자로 삽입하는 방법

오라클에서 읽으려면 cx_Oracle python 패키지를 사용하고 Vertica에 쓰려면 pyodbc 패키지를 사용하고 있습니다. 제가 오라클에서 날짜 열을 읽을 때

나는 다음과 같은 형식으로 그것을 얻을 :

datetime.datetime(2011, 9, 13, 10, 47, 54, 795658) 

편집 :

INSERT INTO "TEST" (COL1) values(datetime.datetime(2011, 9, 13, 10, 47, 54, 795658)) 

I : 내가 Vertica의에서 다음 쿼리를 공격

다음 오류가 발생합니다.

Error: ERROR: schema "datetime" does not exist 
SQLState: 3F000 
ErrorCode: 0 

제 질문은 이것을 Vertica 타임 스탬프 열로 변환하는 방법입니다.

+0

이 어떤 문제 또는 수동 변환없이 작동합니다; 'pyodbc'는 기본적으로'datetime.datetime' 인스턴스를 처리 할 수 ​​있습니다 (SQL_TIMESTAMP 값으로 변환됩니다). 이것이 작동하지 않는다면, 그것은 파이썬이 아닌 ODBC 드라이버에 문제가 될 것입니다. –

+0

Vertica에서 다음 쿼리를 실행하고 오류가 발생했습니다. INSERT INTO "TEST"(COL1) 값 (datetime.datetime (2011, 9, 13, 10, 47, 54, 795658)) – zohar

+0

us * what * 오류. 전체 추적은 제발, 당신은 당신의 질문에 그것을 추가 할 수 있습니다. 서식 지정에 대한 도움말은 [내 코드 블록의 형식은 어떻게 지정합니까?] (http://meta.stackexchange.com/q/22186)를 참조하십시오. –

답변

1

파이썬 코드와 SQL을 혼합하려고합니다. 귀하의 Vertica 서버가 datetime.datetime 정보를 SQL 스키마로 해석하려고하는데 실패합니다. 대신

사용 parameters :

from datetime import datetime 

cursor.execute('INSERT INTO "TEST" (COL1) values(?)', 
    datetime(2011, 9, 13, 10, 47, 54, 795658)) 
+0

목적에 따라 datetime.datetime (2011, 9, 13, 10, 47, 54, 795658)이 Vertica에서 실패했음을 보여줍니다. 당신의 솔루션을 실행하려고 다음과 같은 예외가 있어요 : AttributeError : 형식 개체 'datetime.datetime' 'datetime'특성이 없습니다 – zohar

+0

조정 된 예제; 당신은 모듈로부터'datetime' 타입을 가져 왔고, 당신은 모듈 만 가져 왔다고 생각했습니다. –

+0

이미 가져 왔습니다. – zohar

관련 문제