Last active
July 7, 2023 06:22
-
-
Save arifsuhan/2f299fa65d035914e231d9de82b5ce30 to your computer and use it in GitHub Desktop.
A script to turn csv file into sqlite3 table
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /usr/local/bin/python3 | |
import csv, sqlite3 | |
class csv_2_sqlite: | |
def __init__(self, file_name, db_name, table_name): | |
self.file_name = file_name | |
self.db_name = db_name | |
self.table_name = table_name | |
self.con = "" | |
self.cur = "" | |
def create_connection(self): | |
self.con = sqlite3.connect( self.db_name ) | |
self.cur = self.con.cursor() | |
def create_query(self,header): | |
length = len(header) | |
create_table_query = "CREATE TABLE "+ self.table_name + "(" + ','.join(header) + ");" | |
values_query = ",".join([ "?" for _ in range(length)]) | |
insert_data_query = "INSERT INTO "+ self.table_name + "(" + ','.join(header) + ") VALUES(" + values_query + ");" | |
return create_table_query, insert_data_query | |
def read_csv(self): | |
db_format = [] | |
header = [] | |
with open(self.file_name,'r') as raw_csv: | |
csv_file = csv.DictReader(raw_csv) | |
header = csv_file.fieldnames | |
for key in csv_file: | |
temp = tuple([(v) for _,v in key.items()]) | |
db_format.append(temp) | |
return db_format, header | |
def run(self): | |
self.create_connection() | |
db_format, header = self.read_csv() | |
create_table_query, insert_data_query = self.create_query(header) | |
self.cur.execute(create_table_query) | |
self.cur.executemany(insert_data_query, db_format) | |
self.con.commit() | |
self.con.close() | |
def main(): | |
file_name = [file_name.csv] | |
db_name = [db_name.db] | |
table_name = [table_name] | |
csv_2_sqlite(file_name, db_name, table_name).run() | |
if __name__ == "__main__": | |
main() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment