You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python连接SQL Server执行BULK INSERT遇转义错误求助

解决Python执行SQL Server BULK INSERT的转义字符错误

错误原因

你的报错源于Python解析字符串时,将路径中的\U识别为Unicode转义序列(要求后续跟8位十六进制数),但\Users里的\U无法匹配完整转义格式,导致解码失败。

可行解决方案

方案1:使用Python原始字符串

在SQL语句的三重引号前添加r,让Python跳过对字符串内转义字符的解析:

conn = pyodbc.connect(f'DRIVER={driver};SERVER={server};DATABASE={database};UID={user};PWD={password}')

c = conn.cursor()
# 关键:在三重引号前加r
c.execute(r'''
   BULK INSERT Namen 
   FROM 'C:\Users\pllmkd\Desktop\test.txt'
   WITH (
       FIELDTERMINATOR = ',')
''')
c.commit()

c.close()
conn.close()

方案2:替换为双反斜杠路径

将路径中的单个反斜杠\替换为双反斜杠\\,Python会自动解析为单个反斜杠:

conn = pyodbc.connect(f'DRIVER={driver};SERVER={server};DATABASE={database};UID={user};PWD={password}')

c = conn.cursor()
c.execute('''
   BULK INSERT Namen 
   FROM 'C:\\Users\\pllmkd\\Desktop\\test.txt'
   WITH (
       FIELDTERMINATOR = ',')
''')
c.commit()

c.close()
conn.close()

方案3:使用正斜杠作为路径分隔符

SQL Server支持正斜杠/作为路径分隔符,直接替换即可:

conn = pyodbc.connect(f'DRIVER={driver};SERVER={server};DATABASE={database};UID={user};PWD={password}')

c = conn.cursor()
c.execute('''
   BULK INSERT Namen 
   FROM 'C:/Users/pllmkd/Desktop/test.txt'
   WITH (
       FIELDTERMINATOR = ',')
''')
c.commit()

c.close()
conn.close()

额外注意事项

如果以上方法仍无效,需检查SQL Server服务账户是否有目标文件的读取权限(即便你在SSMS中执行正常,Python连接所用账户可能不同),同时确认文件路径为绝对路径且文件实际存在。

内容的提问来源于stack exchange,提问作者Calle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:35:33