txt2db

code

!/usr/bin/python3

import os
import csv
import sqlite3

curDir = os.getcwd()
class Txt2Db:
def startLoad(self):
# open the database
self.connection = sqlite3.connect('xx.db')
self.cursor = self.connection.cursor()

def endLoad(self):
self.connection.commit()
self.connection.close()

def load(self, file_dir):
for root, dirs, files in os.walk(file_dir):
for i in range(len(files)): # 当前路径下所有非目录子文件
head = os.path.splitext(files[i])[0]
tail = os.path.splitext(files[i])[1]
if tail == '.txt':
if head[0:4] == 'tra-':
self.loadJsonFile(files[i])

def loadJsonFile(self, fileName):
oriTableName = os.path.splitext(fileName)[0]
tableName = "[" + oriTableName + "]"

drop table

sql = "DROP TABLE IF EXISTS" + tableName
self.cursor.execute(sql)

create table

sql = "CREATE TABLE" + tableName +
"(offset int PRIMARY KEY,json Text);"
self.cursor.execute(sql)

drop index

sql = "DROP INDEX IF EXISTS offset_index;"

cursor.execute(sql)

connection.commit()

create index

indexName = "index_" + oriTableName.split('-')[1]
sql = "CREATE INDEX " + indexName + " ON " + tableName + "(offset)"
self.cursor.execute(sql)
self.connection.commit()

Load the CSV file into CSV reader

csvfile = open(fileName, 'r')
creader = csv.reader(csvfile, delimiter='\t', quotechar='"')
# Iterate through the CSV reader, inserting values into the database
for t in creader:
sql = "INSERT INTO" + tableName + "VALUES (?,?)"
self.cursor.execute(sql, t)

Close the csv file, commit changes, and close the connection

csvfile.close()

txt2Db = Txt2Db()
txt2Db.startLoad()
txt2Db.load(curDir)
txt2Db.endLoad()

posted @ 2021-05-21 09:11  cnblogs_kk  阅读(71)  评论(0)    收藏  举报