有效地将csv文件加载到MySQL表中

时间:2012-06-04 22:56:16

标签: mysql

我加载文件的当前方式是:

   load data local infile 'file_name' into table tableA  
fields terminated by ',' enclosed by '"' lines terminated by '\n';

是在unix机器中加载表的最佳方式。它是否创建了最佳的表格大小?我想要一张占据最小空间的桌子。

1 个答案:

答案 0 :(得分:2)

的MyISAM

如果表格是MyISAM,您应该执行以下操作:

set bulk_insert_buffer_size = 1024 * 1024 * 256;
alter table tableA disable keys;
load data local infile 'file_name' into table tableA  
fields terminated by ',' enclosed by '"' lines terminated by '\n';
alter table tableA enable keys;

的InnoDB

如果表是InnoDB,您应该执行以下操作:

set bulk_insert_buffer_size = 1024 * 1024 * 256;
load data local infile 'file_name' into table tableA  
fields terminated by ',' enclosed by '"' lines terminated by '\n';

这不仅占用最少的空间(加载一个空表),而且行将基于bulk_insert_buffer_size在内存中的树状结构中缓冲,以便在重新加载期间更快地缓存数据。

如果您担心ibdata1爆炸,则需要将所有InnoDB表转换为使用innodb_file_per_table。请使用我的InnoDB清理步骤:Howto: Clean a mysql InnoDB storage engine?