2017-06-27 2 views
0

J'ai un problème avec la mise à jour d'une table Access existante. J'ai une base de données Access qui est censée trier certains fichiers .log avec deux colonnes: filename et filedate. J'ai le nom et filedate dans un fichier Excel que j'ai fait de trier les fichiers .log 100+, donc il y a plus de 100 fichiers qui doivent être liés à l'accèsMise à jour de l'erreur de syntaxe du fichier Access existant

Accessenter image description here

Je reçois une erreur tous les temps et ont essayé beaucoup de choses différentes. Le problème est que je ne sais pas comment écrire la syntaxe. Quelqu'un peut-il m'aider s'il vous plaît? Je veux A -> filename et B -> filedate de sorte que chaque paire obtient son propre ID

import pypyodbc 


UDC = r'C:\Users\Kaiser\Documents\Access\UDC.accdb' 
# DSN Connection 
#constr = " DSN=MS Access Database; DBQ={0};".format(UDC) 
# DRIVER connection 
constr = "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)};UID=admin;UserCommitSync=Yes;Threads=3;SafeTransactions=0;PageTimeout=5;MaxScanRows=8;MaxBufferSize=2048;FIL={MS Access};DriverId=25;DefaultDir=C:/USERS/DOCUMENTS/ACCESS;DBQ=C:/USERS/DOCUMENTS/ACCESS/UDC.accdb" 

# Connect to database UDC and open cursor 
db = pypyodbc.connect(constr) 
cursor = db.cursor() 

sql = "UPDATE * INTO [tblLogfile]" + \ 
     "FROM [Excel 8.0;HDR=YES;Database=C:/Users/Documents/Access/Excel.xls].[Tab$];" 

cursor.execute(sql) 
db.commit() 

cursor.close() 
db.close() 

erreur

pypyodbc.ProgrammingError: ('42000', '[42000] [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement.') 
+0

d'abord décider ce que vous voulez faire: https://stackoverflow.com/questions/2002500/what-are-differences-between-insert-and-update-in-mysql - Lisez ensuite la syntaxe appropriée. – Andre

+0

@andre J'ai lu à propos de l'instruction UPDATE mais je ne comprends pas comment je devrais l'écrire dans ma variable sgl, il n'y a pas d'exemples sur comment lier le fichier Excel avec l'accès et c'est ce que j'essaie de faire. – fili

+0

Mais alors je ne sais pas si faire mon chemin est la meilleure façon de faire ce transfert, donc si vous avez des suggestions, je serais heureux d'entendre – fili

Répondre

0

Vous avez besoin quelque chose SQL comme:

sql = "INSERT INTO [tblLogfile] (<list of field names>) SELECT <list of matching field names> FROM [Excel 8.0;HDR=YES;Database=C:/Users/Documents/Access/Excel.xls].[Tab$];"