MySQL 快速导入大量数码 资料收集

一、LOAD DATA INFILE
http://dev.mysql.com/doc/refman/5.5/en/load-data.html 

二、

当数据量较充分时,如上百万竟是上千万记录时,向MySQL数据库被导入数据一般是一个于艰难的经过。通常可以使用以下方法来加快这同样进程:

同样、对于Myisam类型的表明,可以经过以下方式很快的导入大量之数量。 ALTER
TABLE tblname DISABLE KEYS; loading the data ALTER TABLE tblname ENABLE
KEYS;
这有限只指令用来开辟或者关闭Myisam表非唯一索引的换代。在导入大量的数量及一个非空的Myisam表时,通过安装这简单个指令,可以增进导入的频率。对于导入大量多少及一个缺损的Myisam表,默认就是预先导入数据然后才创建索引的,所以无用进行安装。

亚、对于Innodb类型的发明,有以下几种艺术可加强导入的效率:
①因为Innodb类型的表是按照主键的逐条保存之,所以用导入的数量论主键的顺序排列,可以中之增高导入数据的频率。如果Innodb表没有主键,那么网会默认创建一个之中列作主键,所以若可以给表创建一个主键,将得以使这个优势加强导入数据的频率。

②以导入数据前实施SET
UNIQUE_CHECKS=0,关闭唯一性校验,在导入结束晚执行SET
UNIQUE_CHECKS=1,恢复唯一性校验,可以提高导入的效率。

③假如采取使用电动提交的方法,建议于导入前实施SET
AUTOCOMMIT=0,关闭自动提交,导入结束后更实行SET
AUTOCOMMIT=1,打开自动提交,也得增进导入的频率。

 

三、

哪些加强mysql load data infile的速度
测试数据2.5G,共有多少9427567长条。用底mysql的large服务器的配备。
load一赖索要盖10分钟左右。
建的表用的凡MYISAM,调整了几只session的参数值

SET SESSION BULK_INSERT_BUFFER_SIZE=256217728;
SET SESSION MYISAM_SORT_BUFFER_SIZE=256217728;

运转结果如下

Query OK, 9427567 rows affected, 1558 warnings (3 min 55.21 sec)
Records: 9427567 Deleted: 0 Skipped: 0 Warnings: 0 google到之尚足以

setg
lobal KEY_BUFFER_SIZE=256217728;
alter table tablename
disable keys;

哪些load数据之中带倒斜杠(backslash)”\” 的数据
由于要您没有点名FIELDS子句,则默认值为假要您写下如下语句时之价值:
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ‘\\’
所以,如果你的多少里来反斜杠(backslash)”\”的时光,数据会油然而生让截断的问题。出现这种题材,只要写及如下的fields子句即可
FIELDS TERMINATED BY ‘\t’ ENCLOSED BY ” ESCAPED BY ”

哪些load不同编码的数码 原来用的4.X的mysql,我是select INTO OUTFILE
,只后用iconv,或者其他软件来做。可以参照这里,但是出于这次数据充分,用ultraedit等软件打开都使半龙。好当新版的mysql可以加一个新的参数
CHARACTER SET gbk
我之文书数据是GBK的编码,数据表是utf8的,用这种办法测试成功。
怎样load的时刻就insert特定的排
比如表里面有较伯数据差不多之排。可以以load的时指定要插入的字段名字。

演示的代码如下:

LOAD DATA
INFILE ‘~/data.txt’   
INTO TABLE fb0505   
CHARACTER SET 
gbk 
  FIELDS TERMINATED BY
‘\t’
ENCLOSED BY ”
ESCAPED BY ”
LINES TERMINATED BY
‘\n’
STARTING BY ” 
(seller_id,fb_type,fb_date,item_url);

中表fb0505里面还有平等排是id。

 

网站地图xml地图