mysql infile/outfile 导入导出

[color=red]第一种方式:通过SELECT 语句以及 LOAD FILE来导出导入文本文件[/color]

[color=blue]这种方式不会引起行锁定。[/color]

命令:

SELECT * INTO OUTFILE 'D:/sql/test.txt'

FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'

ESCAPED BY '"'

FROM test;


说明:

-- FIELDS 指定字段的参数

[color=red]-- FIELDS TERMINATED BY 字段之间的分割符,默认是/t,这里改成逗号[/color]

-- ESCAPED BY 对特殊字符的转义,默认是使用右斜杠/, 这里改成双引号,这样的话一个双引号就会被转义成2个双引号了

-- LINES 指定行的参数

-- STARTING BY 行最开始附加的内容,我们不需要加,所以设置为空即可

-- TERMINATED BY 指定行结束附加的内容,我们加上换行符,这也是默认的配置

所形式的文件格式为:
64,"dddd",1,1266768001,"221.232.128.170",3006
65,"macbook",1,1266768001,"219.140.248.161",3006
说明:
[color=darkred]1.现在是以”,”来作为分割符。[/color]
[color=blue]2.根据不同的数据类型,来进行了转义以及加上了引号。
进行导入[/color]


load data infile 'd:/sql/test.txt' into table test

FIELDS TERMINATED BY ',' ENCLOSED BY '"'

ESCAPED BY '"' ;


这样的话,[color=red]导入数据的速度会提高三倍左右[/color],[color=red]不过要注意的是它进行导出时的速度与mysqldump的方式来导出的速度没有太大的区别。[/color]
不过要注意的地方:

1. 用 load data 是较快的方法
[color=red]2. 大数据量情况下, 最好是创建好表之后, 同时也要创建好相关的索引。[/color] 虽然说没有索引时导入更快, 但是数据导入完成之后再创建索引总共的耗时比事先创建好了再导入要来的多多了。
另外,如果是myisam表,则最好是导入之前先禁用表的索引,导完之后再启用;或者是一开始不创建索引,导完之后再创建,都会比导入的同时更新索引来的快很多.


mysql>ALTER TABLE tbl2 DISABLE KEYS;
Query OK, 0 rows affected (0.00 sec)

mysql>INSERT INTO tbl2 SELECT * FROM tbl1;
Query OK, 2000000 row affected (36.30 sec)
Records: 2000000 Duplicates: 0 Warnings: 0

mysql>ALTER TABLE tbl2 ENABLE KEYS;
Query OK, 0 rows affected (44.55 sec)

[color=red]在大批量导入时先禁用索引, 在完全导入后, 再开启索引[/color], 一次性完成重建索引的效率会相对高很多, 经过反复几次测试, 感觉后者基本能比前者快 1.2 倍左右. 这也就是 LOAD DATAL INFILE 相对较快的原因之一.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值