MySQL Load Data Infile 使用指南:快速导入大数据量

版权申诉
0 下载量 31 浏览量 更新于2024-08-19 收藏 37KB DOCX 举报
"本文档介绍了MySQL的`LOAD DATA INFILE`命令的使用方法,特别是针对包含中文数据的导入以及处理唯一性约束冲突的策略。" `LOAD DATA INFILE`是MySQL提供的一种高效的数据导入功能,它可以从一个文本文件中快速地加载数据到数据库表中。在处理大量数据时,它的速度远超`INSERT`语句,特别是在40万条数据的导入场景中,只需3-5秒即可完成。 当导入的文本文件包含中文字符时,确保MySQL服务器和文本文件使用相同的字符集是非常重要的。在本例中,MySQL服务器使用的是`utf8`字符集,因此,需要确保待导入的文本文件也以UTF-8编码保存。导入命令如下: ```sql LOAD DATA INFILE "d:/Websites/Sxxxx/test1.txt" IGNORE INTO TABLE `names` FIELDS TERMINATED BY ',' ENCLOSED BY '"'; ``` 在`LOAD DATA INFILE`命令中,`IGNORE`选项用于忽略错误,比如遇到重复的唯一键值时,不会抛出错误而是跳过该行数据。而`REPLACE`选项则会替换掉已存在的唯一键值对应的数据行,这在处理更新或覆盖已有数据时非常有用。 在使用`LOAD DATA INFILE`时,有两种常见情况: 1. **远程客户端导入远程服务器**:在这种情况下,需要在命令行连接MySQL时启用`--local-infile=1`选项,并且如果要从本地文件导入,需要使用`LOCAL`关键字。例如: ```sql LOAD DATA LOCAL INFILE "path/to/file" INTO TABLE `table_name`; ``` 2. **本地服务器导入本地服务器**:如果数据文件和MySQL服务器在同一台机器上,可以直接使用`LOAD DATA INFILE`命令,无需`LOCAL`关键字。但如果存在唯一性约束冲突,导入会失败。这时可以使用`IGNORE`或`REPLACE`来控制如何处理冲突。 在测试中,创建了一个名为`tmp_loaddata`的表,包含一个主键`id`和一个`name`字段。当尝试导入含有重复`id`的文本文件时,如果没有使用`IGNORE`或`REPLACE`,导入会失败。可以通过以下方式查看表的内容: ```sql SELECT * FROM tmp_loaddata; ``` 系统也显示了如何查看表的创建语句,以及使用`system`命令执行操作系统级别的命令,如查看文本文件内容: ```sql SYSTEM cat /home/zhuxu/1.txt ``` `LOAD DATA INFILE`是一个强大的工具,用于快速、高效地导入大量数据到MySQL。正确理解并使用`IGNORE`和`REPLACE`选项,可以有效地处理数据导入时可能遇到的各种问题。为了获取更详细的使用指导,建议查阅MySQL官方手册。