我試圖將解析後的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」命令從發生器一次性批量插入行。 –