gpt4 book ai didi

将数据从 SQL Server 数据库移动到 Oracle 数据库的 Python 脚本不断给出 'ORA-01036: illegal variable name/number'

转载 作者:太空宇宙 更新时间:2023-11-03 16:27:23 28 4
gpt4 key购买 nike

因此,我使用 python 通过一个简单的选择来从 SQL 服务器中提取数据,该选择可获取 15 列。数据看起来像这样

2016-06-01 05:45:06.003,5270,240,1,1,0,5000,1,null,null,7801009661561,0,null,null,null

oracle表上的列除了第一列是日期之外都是数字。尺寸都是正确的。

在获得所有数据后,我通过这个小函数运行它以摆脱 pyodbc.row 类型。

def BuildBindList(recordsToWrite):
closingRecords = []
for rec in recordsToWrite:
closingRecords.append((rec[0], rec[1], rec[2], rec[3], rec[4], rec[5], rec[6], rec[7], rec[7], rec[8], rec[9], rec[10], rec[11], rec[12], rec[13], rec[14]))
return closingRecords

我得到一个元组列表。

然后,为了写入 Oracle 表,我编写了这个接受元组列表的函数。

    def write_to_table(recordsToWrite):     
SQL = '''INSERT INTO ####### (DATETIME, ID, TZ, DOMAINID, EVENTNAME, REASONCODE, TARGETID, STATE, KEY, PERIPHERALKEY, RECOVERYKEY, DIRECTION, ROUTERDAY, ROUTERCKEY, ROUTERNUMBER)
VALUES(:1, :2, :3, :4, :5, :6, :7, :8, :9, :10, :11, :12, :13, :14, :15)'''
try:
trgtcrsr.prepare(SQL)
except cx_Oracle.DatabaseError, exception:
print ('Failed to prepare cursor')
print Exception(exception)
exit (1)
try:
trgtcrsr.executemany(None, recordsToWrite)
except cx_Oracle.DatabaseError, exception:
print ('Failed to insert rows')
print Exception(exception)
exit (1)
target_connection .commit()
target_connection .close()

我像这样建立oracle连接

try:
cnn = cx_Oracle.connect(user="####", password = "####", dsn = "####")
trgtcrsr = cnn.cursor()
print "Connected to Oracle"
except Exception as e:
print e
raise RuntimeError("Could not connect to Oracle")

连接工作正常。但是,当执行 trgtcrsr.executemany(None,recordsToWrite) 行时,它会给我一个 'ORA-01036: 非法变量名称/编号' 错误

我有另一个脚本,它使用相同的方法通过 trgtcrsr.prepare(SQL)/trgtcrsr.executemany(None,recordsToWrite) 将元组列表写入 Oracle 表 方法并且它工作正常(将其 Oracle 授予 Oracle)写入 Oracle,所以我不确定为什么我不断收到此错误。我尝试过更改数据类型并通过谷歌搜索错误,但找不到类似的内容。

有什么想法吗?

最佳答案

rec[7] 在函数 BuildBindList() 中出现两次。

我猜这会导致插入失败,因为您在 insert 语句中传递了 16 列来实例化 15 个绑定(bind)变量。

关于将数据从 SQL Server 数据库移动到 Oracle 数据库的 Python 脚本不断给出 'ORA-01036: illegal variable name/number',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37885691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com