TEXT-2-SQL-CHATBOT / csv_to_sqlite.py
ViditOstwal's picture
first application
059884f
import pandas as pd
import sqlite3
import os
# 1. Define the CSV files you need to load
csv_files = [
"territory_dim.csv",
"rep_dim.csv",
"fact_rx.csv",
"fact_payor_mix.csv",
"date_dim.csv",
"fact_ln_metrics.csv",
"fact_rep_activity.csv",
"account_dim.csv",
"hcp_dim.csv"
]
# 2. Define the database file name
db_file = "pharma_data.db"
def load_csv_to_sqlite():
"""
Loads a list of CSV files into a single SQLite database,
creating a table for each file.
"""
csv_files = [
"territory_dim.csv",
"rep_dim.csv",
"fact_rx.csv",
"fact_payor_mix.csv",
"date_dim.csv",
"fact_ln_metrics.csv",
"fact_rep_activity.csv",
"account_dim.csv",
"hcp_dim.csv"]
# 2. Define the database file name
db_file = "pharma_data.db"
print(f"Connecting to database: {db_file}")
# Connect to the SQLite database (it will be created if it doesn't exist)
conn = sqlite3.connect(db_file)
for file_name in csv_files:
# Check if the file exists before attempting to load
full_path = os.path.join("data", file_name)
if not os.path.exists(full_path):
print(f"⚠️ Warning: File not found: {file_name}. Skipping.")
continue
# Create a clean table name from the file name
table_name = file_name.replace(".csv", "")
try:
print(f"Loading '{file_name}' into table '{table_name}'...")
# Read the CSV into a pandas DataFrame
# Assuming the first row contains headers.
df = pd.read_csv(full_path)
# Write the DataFrame to the SQL database
# 'replace' will overwrite the table if it already exists
df.to_sql(table_name, conn, if_exists='replace', index=False)
print(f" ✅ Successfully loaded {len(df)} rows.")
except pd.errors.EmptyDataError:
print(f" ❌ Error: {file_name} is empty. Skipping.")
except Exception as e:
print(f" ❌ An error occurred while processing {file_name}: {e}")
# Close the connection
conn.close()
print("\nAll files processed. Database connection closed.")
print(f"Database '{db_file}' is ready!")