본문 바로가기
oracle

ORA-01036: illegal variable name/number 잘못된 변수명/번호 |

by 달죽 2020. 10. 6.
반응형

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,..) 이렇게 숫자로 바꿔주니 실행이 되었다. 오라클에서는 숫자로 요청을 해줘야 된다고 하더라.

반응형

댓글