2011-02-09 25 views
0

我加载一个名为“rec.csv”我的MySQL数据库文件在MySQL csv文件。我使用下面的代码:问题批量加载使用Python

import MySQLdb,os 

path='testData' 
absPath = os.path.abspath(path) 
print absPath 

conn = MySQLdb.connect(host='localhost', 
          user='root', 
          passwd='', 
          db='iens') 

db_cursor = conn.cursor() 

query = "LOAD DATA INFILE '"+ absPath + "/rec.csv" +"' INTO TABLE iens.recensies FIELDS TERMINATED BY ' ' LINES TERMINATED BY '\n' " 

db_cursor.execute(query) 
connection.commit() 

由于某种原因它找不到该文件!我可以看到该文件存在,并在打印时正确打印它的路径。但最终它会产生此错误:

File "Load_Data.py", line 18, in <module> 
    db_cursor.execute(query) 
    File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaulterrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.InternalError: (29, "File '/home/hossein/Documents/Parabots/DataBase/testData/rec.csv' not found (Errcode: 13)") 
[email protected]:~/Documents/Parabots/DataBase$ python Load_Data.py 
/home/hossein/Documents/Parabots/DataBase/testData 
Traceback (most recent call last): 
    File "Load_Data.py", line 18, in <module> 
    db_cursor.execute(query) 
    File "/usr/lib/pymodules/python2.6/MySQLdb/cursors.py", line 166, in execute 
    self.errorhandler(self, exc, value) 
    File "/usr/lib/pymodules/python2.6/MySQLdb/connections.py", line 35, in defaulterrorhandler 
    raise errorclass, errorvalue 
_mysql_exceptions.InternalError: (29, "File '/home/hossein/Documents/Parabots/DataBase/testData/rec.csv' not found (Errcode: 13)") 

有人可以告诉我,我做错了什么? 感谢

回答

3

,让您的负载查询略有变化。

LOAD DATA LOCAL INFILE 

即,在查询中添加LOCAL。

按照MySQL文档: 如果指定了LOCAL,则该文件由客户端主机上的客户端程序读取并发送到服务器。该文件可以作为完整的路径名来指定它的确切位置。如果作为相对路径名给出,则名称将相对于客户机程序启动的目录进行解释。

检查这个link以获取更多信息。