gpt4 book ai didi

python - Pyodbc 批量插入语句不会参数化

转载 作者:太空宇宙 更新时间:2023-11-04 06:02:19 24 4
gpt4 key购买 nike

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

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

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

但是,如果我这样做:

"BULK INSERT {0} FROM {1} WITH ( BATCHSIZE = 1000, ROWTERMINATOR = '\\n', KEEPNULLS )".format(tableName,fileName)
cursor.execute(sqlCommand)

它完美地工作。

有没有更好的方法让它工作?

最佳答案

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

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

动态 SQL(以及一般未经验证的输入)引入了 SQL injection漏洞,因此如果这是面向用户的脚本,请确保您正在验证 tableNamefileName 变量。

关于python - Pyodbc 批量插入语句不会参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24189578/

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