我决定尝试 odo 来处理我的 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
我在OS X El Capitan上的本地MySQL实例中尝试了相同的操作,但它给了我以下错误:
/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)sn INTO TABLE test_file2n CHARACTER SET %(encoding)sn FIELDSn TERMINATED BY %(delimiter)sn ENCLOSED BY %(quotechar)sn ESCAPED BY %(escapechar)sn LINES TERMINATED BY %(lineterminator)sn IGNORE %(skiprows)s LINESn '] [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)")
我还能检查什么?
嗯,这是因为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
但没有成功。