我正在尝试使用具有许多插入语句的.sql文件将数据插入表中。
语句如下:
INSERT [dbo].[table_name] ([col1], [col2], [col3], [col4], [col5], [col6], [col7], [col8], [col9], [col10], [col11], [col12], [col13], [col14], [col15], [col16], [col17], [col18], [col19], [col20], [col21], [col22], [col23], [col24], [col25]) VALUES (N'01111', N'SOME RANDOM NAME', N'ABCDE', N'Times', N'ABCD', N'0#aa:', N'06', N'SM', N'123 Cerfdty', N'NULL', N'SM', N'NULL', N'NULL', N'000', N'o2:aq', N'wef0', N'000', N'xx:xx', N'xxxxx', N'ZM', NULL, NULL, NULL, NULL, NULL)
GO
每个语句单独执行,然后通过读取文件来提交。
但是在完成大约240条插入语句之后,出现以下错误:
pyodbc.Error :(“ HY090”,“ [HY090] [Microsoft] [ODBC驱动程序管理器]无效的字符串或缓冲区长度(0)(SQLExecDirectW)”)
我尝试使用上述驱动器进行连接。但是我在所有驱动程序选项中都遇到相同的错误。我正在本地计算机上运行以连接Microsoft SQL Server。
当我开始阅读有关此问题的内容时,我发现在Microsoft下的文档指出:
HY090 |无效的字符串或缓冲区长度(DM)BufferLength中的值小于0。(请参阅SQLSetDescField中SQL_DESC_DATA_PTR字段的说明。)
一些绑定参数需要设置为清除缓冲区,但是我认为在pyodbc中我看不到任何可用的信息或可用的选项。
我可能明显偏离了此问题的最初原因。
请协助我解决这个问题。
try:
with open(filename,'r') as sqlfile:
sql_query = ''
count =0
for line in sqlfile:
if 'GO' in line:
cursor.execute(sql_query)
sql_query = ''
conn.commit()
count = count +1
print(count)
elif 'PRINT' in line:
display = line.split("'")[1]
print(display)
else:
sql_query = sql_query + line
sqlfile.close()
except pyodbc.ProgrammingError as error:
print(error)