2011-06-29 69 views
0

我有一个Django站点与MySQL数据库后端运行。我接受来自其中一个管理员用户的大量上传,以批量导入一些数据。数据的格式与它在数据库中需要的格式略有不同,所以我需要做一些解析。MySql批量导入而不写入文件到磁盘

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

短:我可以采取像对象存储文件,并以某种方式使用MySQL的批量导入操作

回答

1

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

但是,一些操作系统,如Linux,允许一个RAM驻留文件系统,缓解一些伤害。我不够了解系统管理员知道如何建立这些人之一;我必须让我的ISP的技术支持为我做。我发现an article可能有有用的信息。

HTH

+0

不幸的。我有能力建立一个内存文件系统,但它是我不想处理的移动部分,所以我可能不会。写入磁盘的成本可能不会那么糟糕。我只是希望你可以像postgresql的COPY操作一样处理它 – John

+0

是的,这并不坏。而且我只需要每天做一次。但是每次看到这段代码时,我都得磨牙,努力地吞咽。这个遗漏是MySQL中的一个大漏洞,imo。 –

2

有一位优秀的教程叫Generator Tricks for Systems Programmers,解决处理大的日志文件,这是类似,但不完全相同,你的情况。只要您只需访问流中当前(可能还有以前的)数据即可执行所需的转换,这可能适用于您。

我在一些答案中提到了这个宝石,因为我认为它引入了一个不同的这种思维方式很有价值。有一个伴侣片,A Curious Course on Coroutines and Concurrency,可以严重扭曲你的头。

+0

+1 great links! –

相关问题