mysql - 高效地将 csv 文件加载到 MySQL 表中

标签 mysql

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

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

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

最佳答案

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?

关于mysql - 高效地将 csv 文件加载到 MySQL 表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10889525/

相关文章:

Mysql 连接和排序

mysql - 左加入作为新列?

mysql - 从多个表获取数据并对结果进行算术运算

mysql - 使用 DATE_FORMAT() 和 IN 获取总和

javascript - 在不重新加载的情况下显示 MySQL 结果... AJAX 失败

php - #2002 - 服务器没有响应(或者本地 MySQL 服务器的套接字配置不正确)

PHP PDO 登录帐户

mysql - 在 Hibernate 中实现对同一个表中另一个条目的引用

javascript - 如何使用php查找用户一次登录不同的浏览器或不同的系统

SQL查询解决方案-每日余额