sql-server - ODBC Driver 17 for SQL Server]Windows 上的数值超出范围
问题描述
我正在使用 pyodbc 将数据从 csv 文件推送到我的数据库中。csv 文件具有以下结构(仅显示 2 行)
df
vendor FGW prn part stp stly fact fgy comments
GDAFAF 202132 TL 8+9 HHA jkaj-98 0.12 0.999 Bhy iu 1918199
MAMAW 202132 TL 8+9 HHA uysus-09 0.88 0.972 vgty22 451617
所以我打算使用 pyodbc 执行一个 sql 语句来插入我的数据库。
table = "Schema.Table_XXX"
#### Connect via pyodbc
my_conn = pyodbc.connect("DSN=MYDB;UID=jjjjjj;PWD=yyyyyy", autocommit=False)
### MYDB is created on Windows for ODBC Driver 17 for SQL Server
my_cursor = my_conn.cursor()
my_cursor.fast_executemany = True
select_statement = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = '{0}'
AND TABLE_NAME = '{1}';".format(table.split('.')[0], table.split('.')[1])
row_list = my_cursor.execute(select_statement)
column_list = list()
for x in row_list:
column_list.append("[{}]".format(x[3])) # Add all column_names in table a list
schema_string = '(' + ', '.join(column_list) + ')'
values_string = '(?'
for _ in range(len(column_list) - 1):
values_string += ', ?'
values_string += ')'
insert_statement = "INSERT INTO " + table + " " + schema_string + " VALUES " + values_string + ";"
insert_params = list(df.itertuples(index=False, name='Pandas'))
my_cursor.fast_executemany = True
try:
my_cursor.executemany(insert_statement, insert_params)
my_conn.commit()
except pyodbc.Error as error:
print(error)
my_conn.rollback()
但是,当我运行此代码时,出现错误
('22003', '[22003] [Microsoft][ODBC Driver 17 for SQL Server]数值超出范围 (0) (SQLExecute)')
我之前创建的数据库表就是基于这个
CREATE TABLE [Schema].[Table_XXX](
[vendor] [varchar](255) NULL,
[FGW] INT NULL,
[prn] [varchar](255) NULL,
[part] [varchar](255) PRIMARY KEY,
[stp] [float] NULL,
[stly] [float] NULL,
[fact] [varchar](255) NULL,
[fgy] INT NULL,
[comments] [varchar](255) NULL
) ON [PRIMARY]
不明白如何解决这个问题。任何帮助将不胜感激。
解决方案
推荐阅读
- c++ - 如何将枚举分配给派生类
- python - np.random.standard_normal(x) 是如何工作的?
- javascript - Zimjs pressmove 事件在元素外部不起作用
- lua - Pico 8 代码 (lua) 中的编码错误。(这里是新手)
- javascript - API 请求被 CORS 阻止
- python - 在 python 中,需要保存所有结果,而不仅仅是最后一个结果
- sql - 当我们尝试使用绑定变量更新 WHERE 子句中存在的字段时,表更新失败,绑定变量可能为空或不为空
- ios - List 和 NavigationView 中的 SwiftUI 奇怪行为 - 模糊函数正在改变 y 偏移
- python - matplotlib 在具有通用水平颜色条的列中绘制子图
- google-cloud-storage - PermissionDeniedError:来自 /job:worker/replica:0/task:0