10-04-2023, 07:05 AM
Hola, estoy intentando hacer un código para importar ficheros txt, csv, excel, etc en access usando python. Siempre me sale el mismo error:
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis en la definición del campo. (-3553) (SQLExecDirectW)')
Estoy intentando importar un txt con 3 columnas (Fecha, Cantidad, Descripción) a modo ejemplo, pero no consigo saber qué estoy haciendo mal en la query.
Este es el código. Alguna idea?
Gracias!
pyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][Controlador ODBC Microsoft Access] Error de sintaxis en la definición del campo. (-3553) (SQLExecDirectW)')
Estoy intentando importar un txt con 3 columnas (Fecha, Cantidad, Descripción) a modo ejemplo, pero no consigo saber qué estoy haciendo mal en la query.
Este es el código. Alguna idea?
Gracias!
Código:
import pyodbc
#Conexión a la base de datos
conn_str = (
r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};'
r'DBQ=C:\Users\miusuario\Documents\Access_importar\IMPORTA_TXT.accdb;'
)
cnxn = pyodbc.connect(conn_str)
#Abro el fichero txt y leo el contenido
with open('C:\\Users\miusuario\Documents\Access_importar/Datos.txt', 'r') as txt_file:
lines = txt_file.readlines()
#Leo el nombre de las columnas en la primera línea
column_names = lines[0].strip().split(',')
cursor = cnxn.cursor()
#SQL query para crear una nueva tabla en access
table_name = 'NUEVATABLA'
columns = ', '.join([f'[{col}] TEXT' for col in column_names])
query = f'CREATE TABLE {table_name} ({columns})'
#Ejecuto la query
cursor.execute(query)
#inserto los datos en la nueva tabla
query = f'INSERT INTO {table_name} VALUES ({",".join(["?"]*len(column_names))})'
for line in lines[1:]:
row = line.strip().split(',')
cursor.execute(query, row)
cnxn.commit()
cursor.close()
cnxn.close()