2016-04-12 6 views
1

Ich versuche, 5 Spalten von Daten von einer CSV zu MySQL-Tabelle zu importieren. Die erste Spalte von MySQL ist autoincrement, die erste Spalte der CSV ist leer. Der folgende Code erzeugt einen Fehler.CSV in MySQL importieren Fehler

import csv 
import MySQLdb 

database = MySQLdb.connect(host='10.200.10.125', user='spaine', passwd='spaine', db='scat') 
cursor = database.cursor() 


cursor.execute('show tables') 
for row in cursor: 
    print row 

cursor.execute('describe brewpubs') 
print "\n info about table brewpubs" 

for row in cursor: 
    print row 

csv_file = 'E:\\Proving Grounds\\MsSQL Connection\\Brewery Data\\Breweries.csv' 
csv_data = csv.reader(file(csv_file)) 


for row in csv_data: 
    print row 
    cursor.execute('''INSERT INTO brewpubs (PID, name, londd, latdd, desc) VALUES(%s, %s, %s, %s, %s)''', row) 


database.commit() # Make sure data is committed to the database 

database.close() 

Dieser Code erzeugt die folgenden Fehler: ProgrammingError: (1064: „Sie haben einen Fehler in der SQL-Syntax, kontrolliert das Handbuch, die für die richtige Syntax zu Ihrer MySQL-Server-Version entspricht in der Nähe von‚desc verwenden) VALUES ('', 'Hoppy Brewing', '-121,429684', '38 0,554962' , 'http://www.hoppy.' at line 1")

+0

wo hast du 'file (csv_file)'? –

Antwort

3

desc ein reserved word in mysql ist, müssen Sie es von Backticks umschließen (`) zu verwenden Sie es als eine Kennung:

... (PID, name, londd, latdd, `desc`) 
+0

Das hat den Trick gemacht! Vielen Dank. – spaine

0

I Wenn die Spalte automatisch inkrementiert wird, lassen Sie sie vollständig aus der Einfügung aus, da sie immer leer ist.

+0

Wie würden Sie es weglassen, da es die erste Spalte ist? – spaine

+0

Bitte lesen Sie dieses Handbuch [CSV-Datei in Mysql importieren] (http://www.twotutorial.com/2016/03/how-to-import-csv-file-in-mysql-using.html). Hoffe das wird dir helfen. – NomanJaved