微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mysql必读mysql load data infile 的用法(40w数据 用了3-5秒导进mysql)

MysqL必读MysqL load data infile 的用法(40w数据 用了3-5秒导进MysqL)》要点:
本文介绍了MysqL必读MysqL load data infile 的用法(40w数据 用了3-5秒导进MysqL),希望对您有用。如果有疑问,可以联系我们。

MysqL数据库如果是导入有中文的数据,我的MysqL 设置的utf8 字符集,所以你要导入的xxx.txt 文件也要保存utf-8的字符集,命令 load data infile "d:/Websites/Sxxxx/test1.txt" ignore into table `names` fields terminated by ',' enclosed by '"';

MysqL数据库不知道用replace 这个关键字的话,还是会乱码..不同、等高手回答.

MysqL数据库在详细的介绍,推荐大家去看MysqL手册去吧、里面介绍的很详细

MysqL数据库在使用LOAD DATAMysqL的时候,有2种情况: 

MysqL数据库(1)在远程客户端(需要添加选项:--local-infile=1)导入远程客户端文本到MysqL,需指定LOCAL(认就是ignore),ignore选项会放弃数据,加replace选项会更新数据,都不会出现唯一性约束问题. 

MysqL数据库(2)在本地服务器导入本地服务器文本到MysqL,不指定LOACL,出现唯一性约束冲突,会失败回滚,数据导入不进去,这个时候就需要加ignore或者replace来导入数据.

MysqL数据库测试如下:

MysqL数据库(1)本地服务器导入本地服务器文本

MysqL数据库MysqL> show create table tmp_loaddata\G;

MysqL数据库*************************** 1. row ***************************

MysqL数据库Table: tmp_loaddata

MysqL数据库Create Table:CREATE TABLE `tmp_loaddata` (

MysqL数据库`id` int(11) NOT NULL,

MysqL数据库`name` varchar(10) DEFAULT NULL,

MysqL数据库PRIMARY KEY (`id`)

MysqL数据库) ENGINE=InnoDB DEFAULT CHARSET=latin1

MysqL数据库1 row in set (0.00 sec)

MysqL数据库ERROR:

MysqL数据库No query specified

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------+

MysqL数据库| id | name |

MysqL数据库+----+------+

MysqL数据库|1 | test |

MysqL数据库+----+------+

MysqL数据库1 row in set (0.00 sec)

MysqL数据库MysqL>

MysqL数据库MysqL>system cat /home/zhuxu/1.txt

MysqL数据库1,new update

MysqL数据库2,new update

MysqL数据库MysqL>

MysqL数据库MysqL>LOAD DATA INFILE '/home/zhuxu/1.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ',';

MysqL数据库ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

MysqL数据库#出现唯一性约束冲突,会失败回滚

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------+

MysqL数据库| id | name |

MysqL数据库+----+------+

MysqL数据库|1 | test |

MysqL数据库+----+------+

MysqL数据库1 row in set (0.00 sec)

MysqL数据库MysqL>LOAD DATA INFILE '/home/zhuxu/1.txt' IGnorEINTO TABLE tmp_loaddata FIELDS TERMINATED BY ',';

MysqL数据库Query OK,1 row affected(0.00 sec)

MysqL数据库Records: 2Deleted: 0Skipped: 1Warnings: 0

MysqL数据库#使用IGnorE对于冲突的数据丢弃掉.

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------------+

MysqL数据库| id | name|

MysqL数据库+----+------------+

MysqL数据库|1 | test|

MysqL数据库|2 | new update |

MysqL数据库+----+------------+

MysqL数据库2 rows in set (0.00 sec)

MysqL数据库MysqL>LOAD DATA INFILE '/home/zhuxu/1.txt' REPLACEINTO TABLE tmp_loaddata FIELDS TERMINATED BY ',3 rows affected(0.00 sec)

MysqL数据库Records: 2Deleted: 1Skipped: 0Warnings: 0

MysqL数据库#使用REPLACE对于冲突的数据进行更新.

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------------+

MysqL数据库| id | name|

MysqL数据库+----+------------+

MysqL数据库|1 | new update |

MysqL数据库|2 | new update |

MysqL数据库+----+------------+

MysqL数据库2 rows in set (0.00 sec)

MysqL数据库(2)远程客户端导入远程客户端文本

MysqL数据库[zhuxu@xentest9-vm1 tmp]$MysqL -uzhuxu -pzhuxu test -h10.254.5.151

MysqL数据库Welcome to the MysqL monitor.Commands end with ; or \g.

MysqL数据库Your MysqL connection id is 15

MysqL数据库Server version: 5.1.47-log Source distribution

MysqL数据库copyright (c) 2000, 2010, Oracle and/or its affiliates. All rights reserved.

MysqL数据库This software comes with ABSOLUTELY NO WARRANTY. This is free software,

MysqL数据库and you are welcome to modify and redistribute it under the GPL v2 license

MysqL数据库Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------+

MysqL数据库| id | name |

MysqL数据库+----+------+

MysqL数据库|1 | test |

MysqL数据库+----+------+

MysqL数据库1 row in set (0.00 sec)

MysqL数据库MysqL>system cat /tmp/2.txt

MysqL数据库1,new update

MysqL数据库3,new update

MysqL数据库MysqL>

MysqL数据库MysqL>LOAD DATA INFILE '/tmp/2.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ',';

MysqL数据库ERROR 13 (HY000): Can't get stat of '/tmp/2.txt' (Errcode: 2)

MysqL数据库#由于数据库服务器没有对应的文本文件,所以报错.

MysqL数据库MysqL>

MysqL数据库MysqL>LOAD DATA LOCALINFILE '/tmp/2.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ',';

MysqL数据库ERROR 1148 (42000): The used command is not allowed with this MysqL version

MysqL数据库#进去MysqL远程客户端,还需要加--local-infile=1参数指定.

MysqL数据库MysqL> exit

MysqL数据库Bye

MysqL数据库[zhuxu@xentest9-vm1 tmp]$MysqL -uzhuxu -pzhuxu test -h10.254.5.151 --local-infile=1--show-warnings -v -v -v \

MysqL数据库> -e "LOAD DATA LOCAL INFILE '/tmp/2.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ','";

MysqL数据库--------------

MysqL数据库LOAD DATA LOCAL INFILE '/tmp/2.txt' INTO TABLE tmp_loaddata FIELDS TERMINATED BY ','

MysqL数据库--------------

MysqL数据库Query OK,2 rows affected(0.00 sec)

MysqL数据库Records: 3Deleted: 0Skipped: 1Warnings: 0

MysqL数据库Bye

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------------+

MysqL数据库| id | name|

MysqL数据库+----+------------+

MysqL数据库|1 | test|

MysqL数据库|2 | new update |

MysqL数据库|3 | new update |

MysqL数据库+----+------------+

MysqL数据库3 rows in set (0.00 sec)

MysqL数据库#

MysqL数据库[zhuxu@xentest9-vm1 tmp]$MysqL -uzhuxu -pzhuxu test -h10.254.5.151 --local-infile=1--show-warnings -v -v -v \

MysqL数据库> -e "LOAD DATA LOCAL INFILE '/tmp/2.txt' IGnorEINTO TABLE tmp_loaddata FIELDS TERMINATED BY ','";

MysqL数据库--------------

MysqL数据库LOAD DATA LOCAL INFILE '/tmp/2.txt' IGnorE INTO TABLE tmp_loaddata FIELDS TERMINATED BY ',0 rows affected(0.00 sec)

MysqL数据库Records: 3Deleted: 0Skipped: 3Warnings: 0

MysqL数据库Bye

MysqL数据库MysqL>select * from tmp_loaddata;

MysqL数据库+----+------------+

MysqL数据库| id | name|

MysqL数据库+----+------------+

MysqL数据库|1 | test|

MysqL数据库|2 | new update |

MysqL数据库|3 | new update |

MysqL数据库+----+------------+

MysqL数据库3 rows in set (0.00 sec)

MysqL数据库#

MysqL数据库[zhuxu@xentest9-vm1 tmp]$MysqL -uzhuxu -pzhuxu test -h10.254.5.151 --local-infile=1--show-warnings -v -v -v \

MysqL数据库> -e "LOAD DATA LOCAL INFILE '/tmp/2.txt' REPLACEINTO TABLE tmp_loaddata FIELDS TERMINATED BY ','";

MysqL数据库--------------

MysqL数据库LOAD DATA LOCAL INFILE '/tmp/2.txt' REPLACE INTO TABLE tmp_loaddata FIELDS TERMINATED BY ',4 rows affected(0.00 sec)

MysqL数据库Records: 3Deleted: 1Skipped: 0Warnings: 0

MysqL数据库Bye

MysqL数据库MysqL> select * from tmp_loaddata;

MysqL数据库+----+------------+

MysqL数据库| id | name|

MysqL数据库+----+------------+

MysqL数据库|1 | new update |

MysqL数据库|2 | new update |

MysqL数据库|3 | new update |

MysqL数据库+----+------------+

MysqL数据库3 rows in set (0.00 sec)

MysqL数据库--EOF--

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐