我对数据库和python非常陌生。我用脚本读取了许多日志文件,并将数据写入mssqlexpress数据库并使用pymssql。日志文件采用.csv格式,如下所示:
ID;REQUEST
3gix2v2h2mjmmybrf4p5blbm;49db032f0a144efeb1e0e690b4e6a26f; kzbcaakb2ex44dnhrqi4kgvt;28042afb61b44c539fbaa1ac4c303665;
ID和请求在数据库中定义为VARCHAR(50)。在
我的脚本运行得很好,我在数据库中写了大约70000个条目,直到其中一个日志文件中的一行值为:
0xaf3azaza5sb1ztogqfdmwb;934d4978a40c451b8f4080791f752453
出现。我得到了一个错误:
pymssql.ProgrammingError: (102, "Incorrect syntax near 'zaza5sb1ztogqfdmwb'.DB-Lib error message 20018, severity 15)
这是我的剧本:
for filename in os.listdir(sFolderlocation):
if "archive" in filename:
with open(sFolderlocation + os.sep + filename, 'r') as f:
reader = csv.reader(f,delimiter=';')
skipfirstline = True
for row in reader:
werte=[]
if skipfirstline:
skipfirstline = False
continue
werte.append(row[0]) #ID
werte.append(row[1]) #maprequest
werte=tuple(werte)
cursor.execute(
"INSERT INTO webgis_test (SESSIONID,MAPREQUESTID) VALUES (%s, %s)",
werte)
conn.commit()
“0xaf3a”是否以某种方式解释为十六进制,所以我得到了错误?你能帮我修好这个吗?谢谢你的帮助
当别人看到代码中有我可以改进的地方时,我真的很想听听你的建议:)
在MSSQL中,VARCHAR字段用于存储非unicode数据。CSV文件中似乎存在MSSQL无法存储在VARCHAR字段中的无效字符。在
请注意,您发布的行以
0xaf3a
开头,这可能是这个无效字符的十六进制代码。在如果您的文件有这6个符号
0xaf3a
,而在伪行中没有一个unicode字符,那么我猜这是pymssql中的一个错误。尝试更新到最新版本。在希望这有帮助。在
多亏了丹古兹曼。文字没有加引号。在
以下python代码可以工作:
相关问题 更多 >
编程相关推荐