-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinserccion_datos.py
98 lines (86 loc) · 3.67 KB
/
inserccion_datos.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
import pandas as pd
import streamlit as st
import pyodbc
# Configuración de la conexión a SQL Server
server = 'DESKTOP-ODPOVVB\SQLEXPRESS' # Reemplaza con el nombre de tu servidor
database = 'mod_chifa'
# username = 'your_username' # Reemplaza con tu nombre de usuario
# password = 'your_password' # Reemplaza con tu contraseña
driver = '{ODBC Driver 17 for SQL Server}' # Asegúrate de tener el driver ODBC correcto
# Función para crear la conexión
def create_connection():
try:
conn_str = f'DRIVER={driver};SERVER={server};DATABASE={database};Trusted_Connection=yes;'
conn = pyodbc.connect(conn_str)
return conn
except Exception as e:
st.error(f"Error al conectar a la base de datos: {e}")
return None
# Función para obtener las columnas de una tabla
def get_table_columns(table_name):
conn = create_connection()
if conn:
cursor = conn.cursor()
cursor.execute(f"SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = '{table_name}'")
columns = [row[0] for row in cursor.fetchall()]
cursor.close()
conn.close()
return columns
return []
# Interfaz de Streamlit
st.title("Carga de datos a SQL Server")
# Selección de tabla
table_name = st.selectbox("Selecciona la tabla", [
"tb_cliente",
"tb_comprobante",
"tb_empleados",
"tb_gerentes",
"tb_ingredientes",
"tb_menu",
"tb_mesa",
"tb_pedido",
"tb_proveedor",
"tb_stock",
"tb_sucursales"
])
# Mostrar columnas de la tabla seleccionada
if table_name:
columns = get_table_columns(table_name)
st.write(f"Columnas en la tabla {table_name}: {', '.join(columns)}")
# Cargar el archivo CSV
uploaded_file = st.file_uploader("Elige un archivo CSV", type="csv")
# Procesar el archivo CSV si se carga
if uploaded_file is not None:
try:
# Leer el archivo CSV
data = pd.read_csv(uploaded_file)
st.write("Vista previa de los datos:")
st.dataframe(data.head())
# Verificar que las columnas del CSV coincidan con las de la tabla
csv_columns = set(data.columns)
table_columns = set(columns)
if csv_columns != table_columns:
st.warning("Las columnas del CSV no coinciden exactamente con las de la tabla. Por favor, asegúrate de que los nombres de las columnas sean correctos.")
else:
# Convertir los datos del DataFrame a lista de tuplas para la inserción en SQL Server
data_tuples = [tuple(x) for x in data.to_numpy()]
# Definir la consulta de inserción
columns_str = ', '.join(columns)
placeholders = ', '.join(['?'] * len(columns))
insert_query = f'INSERT INTO {table_name} ({columns_str}) VALUES ({placeholders})'
if st.button("Insertar datos en SQL Server"):
conn = create_connection()
if conn:
cursor = conn.cursor()
try:
cursor.executemany(insert_query, data_tuples)
conn.commit()
st.success("Datos insertados exitosamente")
except Exception as e:
st.error(f"Error al insertar datos: {e}")
finally:
cursor.close()
conn.close()
except Exception as e:
st.error(f"Error al procesar el archivo CSV: {e}")
#python -m streamlit run inserccion_datos.py