我试图将解析后的dta数据插入到postgresql数据库中,每行都是一个单独的变量表,它一直在工作,直到我在第二行“recodeid_fk”中添加为止。尝试运行此代码时出现的错误是:pg8000.errors.ProgrammingError :('ERROR','42601','语法错误处于或接近“imp”')。最终,我希望能够同时解析多个文件,并将数据插入到数据库中,但如果有人能够帮助我理解现在正在发生的事情,那就太棒了。我使用Python 2.7.5,statareader来自熊猫0.12的开发记录,而我在Python方面的经验很少。尝试向postgresql中插入数据时出现语法错误
dr = statareader.read_stata('file.dta')
a = 2
t = 1
for t in range(1,10):
z = str(t)
for date, row in dr.iterrows():
cur.execute("INSERT INTO tblv00{} (data, recodeid_fk) VALUES({}, {})".format(z, str(row[a]),29))
a += 1
t += 1
conn.commit()
cur.close()
conn.close()
**绝对不要像这样直接将值插入到SQL中,否则您会严重伤害[SQL注入](bobby-tables.com)。另外,将来请在问题中提及您的PostgreSQL版本。谢谢! –
另外,无论什么时候你看到自己在循环中用SQL来做什么,都会想“我怎样才能把它变成一个集合操作”。在这种情况下,我建议通过Psycopg2的“COPY”支持使用“COPY”命令从发生器一次性批量插入行。 –