我读了这个:Importing a CSV file into a sqlite3 database table using Python

似乎每个人都建议使用逐行读取,而不是使用SQLite的bulk .import。但是,如果您有数百万行的数据,这将使插入速度非常慢。还有其他方法可以避免这种情况吗?

更新:我尝试下面的代码逐行插入,但是速度不如我预期的那样。反正有改进的地方吗

for logFileName in allLogFilesName:
    logFile = codecs.open(logFileName, 'rb', encoding='utf-8')
    for logLine in logFile:
        logLineAsList = logLine.split('\t')
        output.execute('''INSERT INTO log VALUES(?, ?, ?, ?)''', logLineAsList)
    logFile.close()
connection.commit()
connection.close()

最佳答案

使用生成器表达式将您的数据即时划分为多个块,在事务内进行插入。这是sqlite optimization FAQ的报价:



Here's您的代码看起来如何。

同样,sqlite具有import CSV files的能力。

关于python - 使用Python批量将大量数据插入SQLite,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18219779/

10-12 00:25
查看更多