ccqz 2022-05-09 10:24 采纳率: 0%
浏览 104

如何用python jdbc 执行批量把A库的数据插入到B库中

问题

需要把A库中的表同步到B库中,使用jdbc连接执行插入的时候报错,提示 java.sql.SQLException: java.sql.SQLException: 无效的列索引

执行代码如下

img

import sys
import osl
import jaydebeapi

url = 'jdbc:oracle:thin:@8.142.180.78:1521:MAEASDB'
driver = 'oracle.jdbc.driver.OracleDriver'
userFrom = 'test'
passwordFrom = 'test'
jarFile = 'D:/Tools/JDBC/ojdbc8.jar'
connFrom = jaydebeapi.connect(jclassname=driver,
                          url=url,
                          driver_args=[userFrom, passwordFrom],
                          jars=jarFile)
cursFrom = connFrom.cursor()
userTo = 'MAEAS'
passwordTo = 'MAEAS'
jarFile = 'D:/Tools/JDBC/ojdbc8.jar'
connTo = jaydebeapi.connect(jclassname=driver,
                          url=url,
                          driver_args=[userTo, passwordTo],
                          jars=jarFile)
cursTo = connTo.cursor()
sqlStr = 'select FREGIONCODE, FCATEGORYNUMBER, FCATEGORYNAME, FCATEGORYSUBCODE, FCATEGORYSUBNAME, FPAYITEMNUMBER, FPAYITEMNAME, FPAYITETYPE, FCATEGORYID, FCATEGORYSUBID from CT_CUS_PAYITEMSCATE_INIT'
cursFrom.execute(sqlStr)
resultFrom = cursFrom.fetchall()
#cursTo.execute(sqlStr)
#result = cursFrom.fetchall()
sqlInsert='insert into CT_CUS_PAYITEMSCATE_INIT (FREGIONCODE, FCATEGORYNUMBER, FCATEGORYNAME, FCATEGORYSUBCODE, FCATEGORYSUBNAME, FPAYITEMNUMBER, FPAYITEMNAME, FPAYITETYPE, FCATEGORYID, FCATEGORYSUBID) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);'
#sqlInsert=sqlInsert+" Values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)"
cursTo = connTo.cursor()
cursTo.executemany(sqlInsert,resultFrom)
   #connTo.commit()
#cursTo.execute(sqlStr)
#resultTo = cursFrom.fetchall()
print(sqlInsert)

Java Exception The above exception was the direct cause of the following exception: java.sql.SQLException Traceback (most recent call last) d:\C\jdbc-query.ipynb Cell 1’ in <cell line: 30>() 34 sqlInsert=sqlInsert+" Values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" 35 #cursTo.execute(sqlInsert,value) —> 36 cursTo.executemany(sqlInsert,resultFrom) 37 connTo.commit()

521 for i in range(len(parameters)): 522 # print (i, parameters[i], type(parameters[i])) –> 523 prep_stmt.setObject(i + 1, parameters[i]) java.sql.SQLException: java.sql.SQLException: 无效的列索引

  • 写回答

2条回答 默认 最新

  • 二九筒 2022-05-09 10:36
    关注

    你这插入语句都没有传值啊,就一个占位符%s,你的把后面select出来的值进行for循环提取,然后把参数传入insert语句中

    评论

报告相同问题?

问题事件

  • 创建了问题 5月9日

悬赏问题

  • ¥15 BP神经网络控制倒立摆
  • ¥20 要这个数学建模编程的代码 并且能完整允许出来结果 完整的过程和数据的结果
  • ¥15 html5+css和javascript有人可以帮吗?图片要怎么插入代码里面啊
  • ¥30 Unity接入微信SDK 无法开启摄像头
  • ¥20 有偿 写代码 要用特定的软件anaconda 里的jvpyter 用python3写
  • ¥20 cad图纸,chx-3六轴码垛机器人
  • ¥15 移动摄像头专网需要解vlan
  • ¥20 access多表提取相同字段数据并合并
  • ¥20 基于MSP430f5529的MPU6050驱动,求出欧拉角
  • ¥20 Java-Oj-桌布的计算