我试图将我的csv文件导入数据库。但是失败了。

    # -*- coding: utf-8 -*-
import MySQLdb

class Database:

    def __init__(self):

        self.host = 'localhost'
        self.user = 'root'
        self.port =  3306
        self.password = 'root'
        self.db = 'test'
        self.connection = MySQLdb.connect(self.host, self.user, self.password, self.db, self.port, local_infile = 1)
        self.cursor = self.connection.cursor()


    def insert_csv_test(self):

        query = "LOAD DATA LOCAL INFILE ‘/Users/ankr/Desktop/output’ INTO TABLE details FIELDS TERMINATED BY ‘,’ LINES TERMINATED BY ‘\n’"
        self.cursor.execute(query)
        self.connection.commit()
        self.connection.close()
        print("Done")

    def close_connection(self):
        self.connection.close()

database = Database()
database.__init__()
database.insert_csv_test()
database.close_connection()


它失败。在下面看到这个。


  追溯(最近一次通话):文件“ test.py”,第30行,在
  
      database.insert_csv_test()在insert_csv_test中的文件“ test.py”,第20行
      self.cursor.execute(query)文件“ /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/MySQLdb/cursors.py”,
  行202,在执行
      self.errorhandler(self,exc,value)文件“ /Library/Python/2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.12-intel.egg/MySQLdb/connections.py”,
  第36行,在defaultErrorhandler中
      引发错误类,错误值
  _mysql_exceptions.ProgrammingError:(1064,“您的SQL语法有错误;请查看与您的MySQL服务器相对应的手册
  在附近使用正确语法的版本
  '\ xe2 \ x80 \ x98 / Users / ankr / Desktop / output \ xe2 \ x80 \ x99 INTO TABLE详细信息
  在第1行的\ xe2 \ x80 \ x98,\ xe2 \ x80 \ x99 LI'终止的字段


任何帮助,将不胜感激。

最佳答案

这可能是一个天真的答案,但是我认为问题出在字符上。它被解释为UTF-8字符。尝试用常规单引号-'替换它。

关于python - 将本地infile csv加载到mysql数据库失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46807680/

10-12 20:08