根据我的阅读,这是一个常见错误——我正在将制表符分隔的文本文件读入 sqlite 数据库,虽然有 15 列,但在某些行中没有数据。例如,这是我正在阅读的一段文本文件:
http://www.vta.org/schedules/tdl/SC_902NO_WK.tdl
我只是在实际时间阅读。问题是,例如,并非每一列都完全填满了时间,这就是我得到的原因
sqlite3.ProgrammingError:提供的绑定数量不正确。当前语句使用 >15,并且提供了 8 个。
如何处理文本文件中的空值?
这是我的代码
import sqlite3 as lite
import sys
import csv
con = lite.connect('vta.db')
with con:
cur = con.cursor()
cur.execute('DROP TABLE IF EXISTS NB_902_Wkdy')
cur.execute("""CREATE TABLE NB_902_Wkdy ( Train_Num INT primary key, Winchester TEXT, Bascom TEXT, Fruitdale TEXT, Diridon TEXT,
Convention TEXT、Santa_Clara TEXT、Civic_Center TEXT、Metro TEXT、Tasman TEXT、Old_Ironsides TEXT、Fair_Oaks TEXT、Lockheed TEXT、Whisman TEXT、Mountain_View TEXT) """)
creader = csv.reader(open('NB_902_Wkdy', 'rb'), delimiter='\t')#, quotechar='|')
for t in creader:
cur.execute('INSERT INTO NB_902_Wkdy VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)', t)
creader.close()