2011-11-02 72 views
0

我正在使用MySQL切断转储文件中的数据

我得到一个mysql转储文件(large_data.sql),我可以创建一个数据库并从这个转储文件加载数据到创建的数据库。这个没问题。

现在,我觉得转储文件中的数据太大(例如,它在一个表中包含300000行/对象,其他表也包含大量数据)。

因此,我决定做一个可以包含小尺寸数据(例如,表格中的30行/对象)的另一个转储(基于大容量转储)。

仅与该大尺寸转储文件,什么是正确和有效的方式切断在垃圾堆里的数据,并创建包含少量数据的一个新的转储文件?

-------------------------更多-------------------- ---------------

(使用文本工具打开大型转储并不好,因为转储非常大,需要很长时间才能从文本打开转储工具)

+0

您必须手动编辑它,或者重新导入转储文件并创建新的较短的转储(但是,我认为您需要通过指定自定义查询以每个表格为基础执行此操作)。 –

回答

0

如果你想只对文本转储文件时,您可以使用一些文本工具(如awksed,或者一个perlpythonocaml脚本)来处理它们。

但也许你的大数据库已经从大转储文件加载,并且你想与MySQL incremental backups一起工作?

+0

使用文本工具不好,因为转储非常大,需要花费时间从文本工具打开转储 – Mellon

+0

您不需要在编辑器中打开转储。我建议使用标准的Posix或Unix工具对它进行过滤(假设是Unix系统),因为它们能够逐行工作,能够处理非常大的输入文件(并依次读取它们)。 –

0

我推荐免费的文件分割器:http://www.filesplitter.org/

唯一的问题:它将查询分为两部分。你需要在文件后手动编辑文件,但它的功能就像一个魅力。

例子:

我的文件是:

BlaBloBluBlw 
    BlaBloBluBlw 
    BlaBloBluBlw 

结果将是: 文件1:

BlaBloBluBlw 
    BlaBloBl 

文件2:

uBlw 
    BlaBloBluBlw 

所以,你需要编辑永远事情,但它的工作就像一个魅力,非常快。今天在一个9,5百万行的桌子上使用。

但是!!最好的论证:与您尝试导入大型或等待它的时间相比,您执行此操作所需的时间很少......即使您需要编辑文件manualy,因为您需要重建最后和第一个查询。