加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何使用Pandas将巨大的CSV转换为SQLite?

发布时间:2020-12-12 23:43:05 所属栏目:百科 来源:网络整理
导读:我有一个存档的CSV文件形式的巨大的表(约60 GB).我想将其转换为SQLite文件. 我现在做的如下: import pandasimport sqlite3cnx = sqlite3.connect('db.sqlite')df = pandas.read_csv('db.gz',compression='gzip')df.to_sql('table_name',cnx) 它适用于较小的
我有一个存档的CSV文件形式的巨大的表(约60 GB).我想将其转换为SQLite文件.

我现在做的如下:

import pandas
import sqlite3
cnx = sqlite3.connect('db.sqlite')
df = pandas.read_csv('db.gz',compression='gzip')
df.to_sql('table_name',cnx)

它适用于较小的文件,但有巨大的文件,我有内存问题.问题是pandas将整个表读入内存(RAM),然后将其保存到SQLite文件中.

这个问题有优雅的解决方案吗?

由于它的大小,这对熊猫来说会有问题.任何原因你不能使用csv模块并只是遍历文件.

基本想法(未经测试):

import gzip
import csv
import sqlite3

with gzip.open('db.gz') as f,sqlite3.connect('db.sqlite') as cnx:
    reader = csv.reader(f)
    c = cnx.cursor()
    c.executemany('insert into table_name values (?,?,...)',reader)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读