sql_chat_bot / aux_functions /create_tables.py
RajMl's picture
Upload 23 files
1295ae5 verified
import streamlit as st
import os
import pandas as pd
def read_aux_data():
"""
Reads the file name and column names from separate files within the aux_data directory.
Returns:
column_names (str): The column names read from column_names.txt.
file_name (str): The file name read from file_name.txt.
"""
column_names_filename = 'aux_data/column_names.txt'
file_name_filename = 'aux_data/file_name.txt'
with open(column_names_filename, 'r') as column_file:
column_names = [line.strip() for line in column_file.readlines()]
# Read file name
with open(file_name_filename, 'r') as file_file:
file_name = file_file.read().strip()
return column_names, file_name
def built_table():
st.title("File Upload, Data Preview, and SQL Schema Creation")
column_names, file_name = read_aux_data()
st.write("## Load and Display Saved Column Data")
st.write(column_names)
st.write("## Load and Display Sample Data")
file_path = os.path.join('data', file_name)
if os.path.exists(f"{file_path}.csv"):
df = pd.read_csv(f"{file_path}.csv")
st.write(df.head(20))
else:
st.write("Sample data not found.")
st.write("## Create SQL Schema")
sql_schema = {}
data_types = ['VARCHAR(250)', 'INT', 'FLOAT', 'DATE', 'DOUBLE']
for col in column_names:
selectbox_key = f"{col}_selectbox"
data_type = st.selectbox(f"Select data type for column '{col}'", [''] + data_types, key=selectbox_key)
if data_type == '':
st.warning(f"Please select a data type for column '{col}'.")
st.stop() # Stop execution if a data type is not selected
sql_schema[col] = data_type
st.write("### Generated SQL Schema")
create_table_query = f"CREATE TABLE {file_name} (\n"
create_table_query += ",\n".join([f" {col} {dtype}" for col, dtype in sql_schema.items()])
create_table_query += "\n);"
st.code(create_table_query, language='sql')
if st.button("Schema is correct"):
# Store the query in a file
query_filename = 'aux_data/query.txt'
with open(query_filename, 'w') as query_file:
query_file.write(create_table_query)
st.success("Query has been saved.")
return None