Pyodbc bulk insert语句不会参数化

2024-10-01 13:42:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让Python通过清理csv文件来填充SQL表,然后在SQL中进行批量上传。当我尝试以以下方式执行插入时:

sqlCommand = "BULK INSERT ? FROM ? WITH ( BATCHSIZE = 1000, ROWTERMINATOR = '\\n', KEEPNULL )"
cursor.execute(sqlCommand,tableName,fileName)

我得到以下错误:“@P1”附近的语法不正确。(102)(SQLExecDirectW)

但是,如果我这样做:

^{pr2}$

它工作得很好。在

有没有更好的方法让这个工作起来?在


Tags: 文件csvfromexecutesqlwith方式bulk
1条回答
网友
1楼 · 发布于 2024-10-01 13:42:30

在T-SQL中,表名(和列)名不允许使用?parameter占位符。在

第二种选择是在对数据库服务器执行之前使用Python中的字符串格式来构建T-SQL语句。这也称为dynamic SQL,是使用BULK INSERT完成任务的唯一方法。在

动态SQL(通常是未验证的输入)引入了SQL injection漏洞,因此如果这是面向用户的脚本,请确保您正在验证tableName和{}变量。在

相关问题 更多 >