다음과 같이 Oracle 커서를 사용하여 SQL Server에 삽입하여 executemany를 수행하려고합니다.
sqlservercursor.executemany("INSERT INTO tablename (col1,col2...) VALUES (?,?…)",oraclecursor)
다음 오류와 함께 실패합니다.OverflowError: int too big to convert
나는 그것을 큰 숫자 (NUMBER (25)) 인 id 열로 진단했다.
다음을 사용하여 재현 할 수 있습니다.
sqlservercursor.execute('INSERT INTO tablename (Id) VALUES (?)',(90100111000002885322904,))
그러나 이것은 작동합니다.
sqlservercursor.execute('INSERT INTO tablename (Id) VALUES (90100111000002885322904)')
이 문제를 해결하는 방법이 있습니까? 아니면 커서를 반복하고 수동으로 삽입해야합니까? 이것은 pyodbc의 빠른 실행과 문자를 처리해야하는 것에 비해 느릴 것입니다.
귀하의 문제를 재현하고 fast_executemany를 사용하여 문제를 해결할 수있었습니다 .
cnxn = pyodbc.connect("DSN=mssqlLocal64")
crsr = cnxn.cursor()
crsr.execute("CREATE TABLE ##tablename (Id decimal(25,0))")
data = [(90100111000002885322904,)] # list of tuple(s)
sql = "INSERT INTO ##tablename (Id) VALUES (?)"
crsr.fast_executemany = True
crsr.executemany(sql, data)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다