반응형
cx_oracle 이용할때 힘들었던 것 정리
import pandas as pd
import cx_Oracle
import os
# Dataframe 불러오기
df = pd.read_csv('sector_2020-10-06 0.csv',usecols=[1,2,3,4,5,6,7])
df = df.fillna('') #NaN 제거
print(df)
os.putenv('NLS_LANG', '.UTF8')
LOCATION = r"C:/oracle/instantclient_11_2"
os.environ["PATH"] = LOCATION+";"+os.environ["PATH"]
#연결에 필요한 기본 정보 (유저, 비밀번호, 데이터베이스 서버 주소)
db = cx_Oracle.connect('user','PASSWORD','IP:PORT/SCHEMA')
cursor = db.cursor()
cursor.execute('DELETE FROM DART_KEYWORD_SECTOR')
cursor.executemany("INSERT INTO DART_KEYWORD_SECTOR(CODE,INDUSTRY1,INDUSTRY2,INDUSTRY3,SECTOR1,SECTOR2,MARKET) VALUES (:1,:2,:3,:4,:5,:6,:7)", df.values.tolist())
db.commit
cursor.close() # cursor 객체 닫기
db.close()
ORA-01036: illegal variable name/number 계속 이게 떠서 무슨 오류인지 했는데
VALUES 부분을 처음에 (%s,%s,%s,%s ..) 이런식으로 했더니 안됬던 거였음 (쿼리 문제)
Mysql 과 oracle은 비슷하지만 디테일한 부분이 좀 다른거 같다.
VALUES 부분을 (:1,:2,:3,:4,..) 이렇게 숫자로 바꿔주니 실행이 되었다. 오라클에서는 숫자로 요청을 해줘야 된다고 하더라.
반응형
'oracle' 카테고리의 다른 글
cx_oracle 다중처리 : can't pickle cx_oracle._error objects (0) | 2020.12.10 |
---|---|
Oracle 로우값을 컬럼으로 바꾸기 (하나의 컬럼으로 피봇) (0) | 2020.10.21 |
oracle sequence 의 마지막 값 조회 (0) | 2020.10.07 |
오라클 서버ip와 포트 쿼리 이용해서 알아내는법 (0) | 2020.10.05 |
댓글