2016-06-07 79 views
0

我决定尝试odo来处理我的csv数据,因为它的速度比用熊猫做得快,但我无法使它工作。使用Python和odo模块在mysql上加载csv时出错

这是他们对一个30GB的csv文件迁移到MySQL数据库文件:

In [1]: %time t = odo('all.csv', 'mysql+pymysql://localhost/test::nyc') 
CPU times: user 1.32 s, sys: 304 ms, total: 1.63 s 
Wall time: 20min 49s 

我试着在我的本地MySQL实例一样在我的OS X埃尔卡皮坦,但它给了我下面的错误:

/Library/Python/2.7/site-packages/PyMySQL-0.7.1-py2.7.egg/pymysql/err.pyc in _check_mysql_exception(errinfo) 
    113 
    114  # couldn't find the right error number 
--> 115  raise InternalError(errno, errorvalue) 
    116 
    117 

InternalError: (pymysql.err.InternalError) (13, u"Can't get stat of '/path/to/test.csv' (Errcode: 13 - Permission denied)") [SQL: u'LOAD DATA INFILE %(path)s\n   INTO TABLE test_file2\n   CHARACTER SET %(encoding)s\n   FIELDS\n    TERMINATED BY %(delimiter)s\n    ENCLOSED BY %(quotechar)s\n    ESCAPED BY %(escapechar)s\n   LINES TERMINATED BY %(lineterminator)s\n   IGNORE %(skiprows)s LINES\n   '] [parameters: {'escapechar': '\\', 'encoding': 'utf8', 'skiprows': 1, 'delimiter': ',', 'lineterminator': u'\n', 'quotechar': '"', 'path': '/path/to/test.csv'}] 

起初,我以为是文件权限的错误,但后来我发现,该表已成功与正确的列名创建的,所以ODO能够访问该文件。所以,我真的不知道错误(13, u"Can't get stat of '/path/to/test.csv' (Errcode: 13 - Permission denied)")

我还能检查什么?

+0

文件系统级权限。错误13表示文件系统级别的问题。您可能无法访问csv文件本身。 – Shadow

+0

那么,我知道我有权访问。就像我在帖子中所说的那样,odo实际上创建了带有csv中列名的表。问题可能是MySQL无法访问该文件,但我已将其权限更改为777,父文件夹至少具有“读取”权限 – estemendoza

回答

0

嗯,这是因为MySQL无法访问文件。它似乎需要在mysql安装文件夹内,在我的情况下是/usr/local/mysql-5.6.20-osx10.7-x86_64/

我试图把它放在数据文件夹中,/usr/local/mysql-5.6.20-osx10.7-x86_64/data/my_db,并没有解决。