2

これは私のコードです:

#!/usr/bin/python 
import MySQLdb
import csv

db = MySQLdb.connect(host="host", # The Host
                     user="username", # username
                     passwd="pwd", # password
                     db="databasename") # name of the data base

sqlLoadData = 'LOAD DATA LOCAL INFILE "csv?_file_name.csv" INTO TABLE tablename '   
sqlLoadData += 'FIELDS TERMINATED BY "," LINES TERMINATED BY "\n"'     
sqlLoadData += 'IGNORE 1 LINES'     
sqlLoadData += 'ENCLOSED BY '"' ESCAPED BY "\\" '

try:
    curs = db.cursor()   
    curs.execute(sqlLoadData)    
    resultSet = curs.fetchall()    
except StandardError, e:    
    print e    
    db.rollback()
    db.close()

エラー メッセージが表示されます。SQL 構文にエラーがあります。Mysql サーバーに対応するマニュアルを確認してください。

部品を取り外すと、sqlLoadData += 'ENCLOSED BY '"' ESCAPED BY "\\" 'すべてが完璧に機能します。最後の部分は、値から引用符を削除するためだけに使用しました。

私も試しました:

カーソル = mydb.cursor()

リーダー = csv.reader(open('Cumulative.csv', 'rb'))

reader.next() for row in reader[1:]: cursor.execute('INSERT INTO Cumulative (C1, C2, C3, C4, C5, C6) VALUES(%s, %s, %s, %s, % s, %s)', 行)
cursor.commit()

データベースへの接続を閉じます。

カーソル.close()

整数フィールドがデータをサポートするように、引用符を削除したいだけです。したがって、引用符「1」を使用すると、整数ではなく文字列と見なされます

誰でもこれを理解するのを手伝ってもらえますか?

ありがとう!

4

3 に答える 3

4

前の行をスペースまたは改行文字で終了するのを忘れたようです。これにより、パーサーLINESENCLOSEDが明らかにキーワードではないものを理解しようとすると、構文エラーが発生します。

 sqlLoadData += 'IGNORE 1 LINES \n'
 sqlLoadData += ''ENCLOSED BY '"' ESCAPED BY "\" ''

経験則として、デバッグ中に行を削除してコードを修正できる場合は、すぐ上の行を除外しないでください。

編集: 2 行目の引用符を変更しました。「囲まれた」ステートメントで壊れていたと思います。

于 2013-03-04T21:45:11.973 に答える
2

2日間の調査の後、私は答えを見つけました:

!/usr/bin/python  
import MySQLdb 
import csv

db = MySQLdb.connect(host="host", # The Host
                      user="username", # username
                      passwd="pwd", # password
                      db="databasename") # name of the data base

 cursor = connection.cursor() 
 Query = """ LOAD DATA LOCAL INFILE 'usrl to csv file' INTO TABLE
 table_nameFIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED
 BY '"' Lines terminated by '\n' IGNORE 1 LINES """

cursor.execute(Query)   
connection.commit()   
cursor.close()

それが誰かを助けることを願っています。

于 2013-03-05T18:04:53.720 に答える