На веб-сайте http://converttosqlite.com/convert/
он имеет в качестве входных данных: файл CSV, представляющий таблицу. Первая строка таблицы представляет имя столбцов.
В качестве вывода она выводит: БД SQLite с таблицей
Я обновил в python. Теперь есть папка с несколькими таблицами. Каждый файл в папке представляет собой таблицу. Каждая таблица разделена '\n'
и '\t'
Первая строка каждой таблицы представляет собой имя столбцов. И я добавил, что вторая строка представляет тип данных столбцов.
#------- imports--------------
import sqlite3
from sqlite3 import Error
import os
#-------DEFs--------------
def create_connection(db_file):
""" create a database connection to a SQLite database """
conn = None
try:
return sqlite3.connect(db_file)
except Error as e:
print(e)
finally:
if conn:
conn.close()
def create_table(conn,table_filename):
table_name = table_filename.split('/')[-1]
conn.execute('DROP TABLE IF EXISTS '+table_name)
# get mat table from file
table = fileText_to_mat(table_filename)
# table size
len_col = len(table[0])
len_rows = len(table)
#------CREATE TABLE-----------------------
sql_create ='CREATE TABLE '+table_name+'('
for id_col in range(len_col):
sql_create +=str(table[0][id_col])+' '+str(table[1][id_col])+','
sql_create = sql_create[0:-1]+'); '
print(sql_create)
conn.execute(sql_create)
#------INSERT INTO TABLE-----------------------
sql_insert ='INSERT INTO '+table_name+'('
for id_col in range(len_col):
sql_insert +=str(table[0][id_col])+','
sql_insert = sql_insert[0:-1]+') VALUES'
for id_row in range(2,len_rows):
sql_insert += ' ('
for id_col in range(len_col):
sql_insert +="'"+str(table[id_row][id_col])+"',"
sql_insert = sql_insert[0:-1]+'),'
sql_insert = sql_insert[0:-1]+';'
#print(sql_insert)
conn.execute(sql_insert)
#------COMMIT-----------------------
conn.commit()
conn.close()
print('fim')
def fileText_to_mat(table_filename):
table = [i.strip('\n').split('\t') for i in open(table_filename)]
return table
def folder_full_to_arrayString(folder_name):
return [os.path.join(folder_name, f) for f in os.listdir(folder_name)]
#-------Main--------------
# create file python
name_file_python = 'sqlite.db'
conn = create_connection(name_file_python)
# get tables in folder_tables
name_folder = 'folder_tables'
list_tables = folder_full_to_arrayString(name_folder)
print(list_tables)
# For Each File_table. Create a table
for table in list_tables:
create_table(conn,table)
Вопрос:
что вы думаете об этом решении кода?
какие библиотеки Python я использовал, что делает это решение?