如何加快读取压缩的csv文件并将其插入sqlite数据库的速度

时间:2019-04-25 15:00:42

标签: python-2.7 optimization zipfile

我可以将压缩后的csv文件读取到内存中,也可以将csv数据从内存中插入到sqlite数据库中,但是这样做的时间很长。我进行了三个试验:两个将压缩的文件读入内存并插入(一个具有def,一个不具有def),另一个尝试提取文件,然后使用csv reader插入sqlite数据库。

结果如下: 测试1:将没有def的zip文件压缩为stringIO代码,以将其插入sqlite db

runfile('C:/ python_project_scripts / zipprd_csv_tbl_2 sqlite_db.py',wdir ='C:/ python_project_scripts')  有数据库连接; Trade-Exports-Chp-47.csv耗时:1619.531秒

测试2:使用def将zip文件压缩为stringIO代码,以将其插入sqlite数据库

runfile('C:/ python_project_scripts / zipprd_csv_tbl_2 sqlite_db.py',wdir ='C:/ python_project_scripts')  有数据库连接; Trade-Exports-Chp-47.csv耗时:1627.567秒

测试3:解压缩文件,读取csv文件并插入sqlite数据库

runfile('C:/ python_project_scripts / zipprd_csv_tbl_2 sqlite_db.py',wdir ='C:/ python_project_scripts')  有数据库连接; Trade-Exports-Chp-47.csv耗时:3.592秒

我是否有时间将压缩文件读入内存,然后插入常见的sqlite数据库?

所有文件都使用Windows 7,python 2.7,sqlite3 2.6放在我的PC硬盘上

〜 该代码段为:

zfile = zipfile.ZipFile(z)
data = StringIO.StringIO(zfile.read(_file)) #don't forget this line!
if re.match(r'^Trade-.*\ports-Chp.*\.csv$', _file):
# send to read file and insert into db

fieldnames = ['hs_code', 'uom', 'country', 'state', 'prov', 'value', 'quantity', 'year', 'month']

dr = csv.DictReader(os.path.join(DIR_PATH, _file), fieldnames=fieldnames)
to_db = [(i['hs_code'], i['uom'], i['country'], i['state'], i['prov'], i['value'], i['quantity'], i['year'], i['month']) for i in dr]
cur.executemany("INSERT INTO exp_data VALUES (NULL,?,?,?,?,?,?,?,?,?);", to_db)
conn.commit()

0 个答案:

没有答案