2017-06-27 5 views
0

Ich habe ein Problem mit der Aktualisierung einer vorhandenen Access-Tabelle. Ich habe eine Access-Datenbank, die einige .log-Dateien mit zwei Spalten sortieren soll: filename und filedate. Ich habe den Dateinamen und Dateidatum in einer Excel-Datei, die ich aus dem Sortieren durch 100+ LOG-Dateien vorgenommen haben, so gibt es mehr als 100 Dateien, die verbunden werden sollenAktualisieren der vorhandenen Access-Datei Syntaxfehler

Accessenter image description here

ich einen Fehler für den Zugriff auf alle Zeit und habe viele verschiedene Dinge ausprobiert. Das Problem ist, dass ich nicht weiß, wie man die Syntax schreibt. Kann mir bitte jemand damit helfen? Ich möchte A -> filename und B -> filedate, so dass jedes Paar seine eigene ID bekommt

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() 

Fehler

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

zunächst entscheiden, was Sie tun möchten: https://stackoverflow.com/questions/2002500/what-are-differences-between-insert-and-update-in-mysql - Lesen Sie dann die entsprechende Syntax nach. – Andre

+0

@andre Ich habe über die UPDATE-Anweisung gelesen, aber ich verstehe nicht, wie ich es in meine SGL-Variable schreiben sollte, es gibt keine Beispiele, wie man die Excel-Datei mit dem Zugriff verbindet, und das versuche ich zu tun. – fili

+0

Aber dann weiß ich nicht, ob es mein Weg ist der beste Weg, um diese Übertragung zu tun, so, wenn Sie einige Vorschläge haben, ist froh, zu hören – fili

Antwort

0

Sie benötigen SQL so etwas wie:

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$];" 
Verwandte Themen