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()
上一篇:通用装饰器


下一篇:力扣刷题Python笔记:前 K 个高频元素