MySql批量导入而无需将文件写入磁盘

时间:2011-06-29 17:48:06

标签: python mysql django

我有一个运行mysql数据库后端的django站点。我接受来自其中一个管理员用户的大量上传来批量导入一些数据。数据的格式与数据库中需要的格式略有不同,因此我需要进行一些解析。

我希望能够将这些数据转换为csv并将其写入cStringIO对象,然后只需使用mysql的bulk import命令来加载该文件。我宁愿首先跳过将文件写入磁盘,但我似乎无法找到解决方法。我以前用postgresql基本完成了这个问题,不幸的是这个项目是在mysql上。

简短:我可以使用像对象一样的内存文件,并以某种方式使用mysql批量导入操作

2 个答案:

答案 0 :(得分:2)

有一个名为Generator Tricks for Systems Programmers的优秀教程可以处理大型日志文件,这与您的情况类似但不完全相同。只要您只需要访问流中的当前(可能是以前的)数据就可以执行所需的转换,这可能对您有用。

我已经在许多答案中提到了这个宝石,因为我认为它引入了一种非常有价值的不同的思维方式。有一个配件,A Curious Course on Coroutines and Concurrency,可以严重扭曲你的头。

答案 1 :(得分:1)

如果通过“批量导入”你的意思是LOAD DATA [LOCAL] INFILE那么,不,没有办法首先将数据写入某个文件,该死的一切。你(和我)真的想直接从数组中编写表。

但是一些操作系统,比如Linux,允许RAM驻留文件系统减轻一些伤害。我不足以知道如何建立其中一个人的系统管理员;我必须得到ISP的技术支持才能为我做这件事。我找到an article 可能有用的信息。

HTH

相关问题